Si necesita acceder a la información de las revisiones de Subversion desde otros programas, puede utilizar el interfaz COM de SubWCRev. El objeto a crear es SubWCRev.object, y se soportan los siguientes métodos:
Tabla 6.4. Métodos de automatización/COM soportados
| Método | Descripción |
|---|---|
| .GetWCInfo | Este método atraviesa la copia de trabajo obteniendo la información de revisión. Naturalmente debe llamarlo antes que pueda acceder a la información utilizando los métodos restantes. El primer parámetro es la ruta. El segundo parámetro debe ser true si desea incluir las revisiones de las carpetas; equivalente al parámetro de la línea de comandos -f. El tercer parámetro debería ser true si desea incluir svn:externals; equivalente al parámetro de la línea de comandos -e. |
| .GetWCInfo2 | The same as GetWCInfo() but with a fourth parameter that sets the equivalent to the -E command line switch. |
| .Revision | La revisión de confirmación más alta de la copia de trabajo. Equivalente a $WCREV$ . |
| .Date | La fecha/hora de la revisión de confirmación más alta. Equivalente a $WCDATE$ . |
| .Author | El autor de la revisión de confirmación más alta, esto es, la última persona que confirmó cambios en la copia de trabajo. |
| .MinRev | La revisión mínima de actualización, como se muestra en $WCRANGE$ |
| .MaxRev | La revisión máxima de actualización, como se muestra en $WCRANGE$ |
| .HasModifications | True si hay modificaciones locales |
| .HasUnversioned | True if there are unversioned items |
| .Url | Reemplaza con la URL del repositorio de la copia de trabajo utilizados en GetWCInfo . Equivalente a $WCURL$ . |
| .IsSvnItem | True si el ítem está versionado. |
| .NeedsLocking | True si el ítem tiene la propiedad svn:needs-lock establecida. |
| .IsLocked | True si el ítem está bloqueado. |
| .LockCreationDate | Cadena representando la fecha cuando el bloqueo se creó, o una cadena vacía si el ítem no está bloqueado. |
| .LockOwner | Cadena representando el propietario del bloqueo, o una cadena vacía si el ítem no está bloqueado. |
| .LockComment | El mensaje que se introdujo cuando se creó el bloqueo. |
El siguiente ejemplo muestra cómo se podría usar el interfaz.
// testCOM.js - javascript file
// test script for the SubWCRev COM/Automation-object
filesystem = new ActiveXObject("Scripting.FileSystemObject");
revObject1 = new ActiveXObject("SubWCRev.object");
revObject2 = new ActiveXObject("SubWCRev.object");
revObject3 = new ActiveXObject("SubWCRev.object");
revObject4 = new ActiveXObject("SubWCRev.object");
revObject1.GetWCInfo(
filesystem.GetAbsolutePathName("."), 1, 1);
revObject2.GetWCInfo(
filesystem.GetAbsolutePathName(".."), 1, 1);
revObject3.GetWCInfo(
filesystem.GetAbsolutePathName("SubWCRev.cpp"), 1, 1);
revObject4.GetWCInfo2(
filesystem.GetAbsolutePathName("..\\.."), 1, 1, 1);
wcInfoString1 = "Revision = " + revObject1.Revision +
"\nMin Revision = " + revObject1.MinRev +
"\nMax Revision = " + revObject1.MaxRev +
"\nDate = " + revObject1.Date +
"\nURL = " + revObject1.Url + "\nAuthor = " +
revObject1.Author + "\nHasMods = " +
revObject1.HasModifications + "\nIsSvnItem = " +
revObject1.IsSvnItem + "\nNeedsLocking = " +
revObject1.NeedsLocking + "\nIsLocked = " +
revObject1.IsLocked + "\nLockCreationDate = " +
revObject1.LockCreationDate + "\nLockOwner = " +
revObject1.LockOwner + "\nLockComment = " +
revObject1.LockComment;
wcInfoString2 = "Revision = " + revObject2.Revision +
"\nMin Revision = " + revObject2.MinRev +
"\nMax Revision = " + revObject2.MaxRev +
"\nDate = " + revObject2.Date +
"\nURL = " + revObject2.Url + "\nAuthor = " +
revObject2.Author + "\nHasMods = " +
revObject2.HasModifications + "\nIsSvnItem = " +
revObject2.IsSvnItem + "\nNeedsLocking = " +
revObject2.NeedsLocking + "\nIsLocked = " +
revObject2.IsLocked + "\nLockCreationDate = " +
revObject2.LockCreationDate + "\nLockOwner = " +
revObject2.LockOwner + "\nLockComment = " +
revObject2.LockComment;
wcInfoString3 = "Revision = " + revObject3.Revision +
"\nMin Revision = " + revObject3.MinRev +
"\nMax Revision = " + revObject3.MaxRev +
"\nDate = " + revObject3.Date +
"\nURL = " + revObject3.Url + "\nAuthor = " +
revObject3.Author + "\nHasMods = " +
revObject3.HasModifications + "\nIsSvnItem = " +
revObject3.IsSvnItem + "\nNeedsLocking = " +
revObject3.NeedsLocking + "\nIsLocked = " +
revObject3.IsLocked + "\nLockCreationDate = " +
revObject3.LockCreationDate + "\nLockOwner = " +
revObject3.LockOwner + "\nLockComment = " +
revObject3.LockComment;
wcInfoString4 = "Revision = " + revObject4.Revision +
"\nMin Revision = " + revObject4.MinRev +
"\nMax Revision = " + revObject4.MaxRev +
"\nDate = " + revObject4.Date +
"\nURL = " + revObject4.Url + "\nAuthor = " +
revObject4.Author + "\nHasMods = " +
revObject4.HasModifications + "\nIsSvnItem = " +
revObject4.IsSvnItem + "\nNeedsLocking = " +
revObject4.NeedsLocking + "\nIsLocked = " +
revObject4.IsLocked + "\nLockCreationDate = " +
revObject4.LockCreationDate + "\nLockOwner = " +
revObject4.LockOwner + "\nLockComment = " +
revObject4.LockComment;
WScript.Echo(wcInfoString1);
WScript.Echo(wcInfoString2);
WScript.Echo(wcInfoString3);
WScript.Echo(wcInfoString4);
El siguiente listado es un ejemplo de como usar el objeto COM SubWCRev desde C#:
using LibSubWCRev;
SubWCRev sub = new SubWCRev();
sub.GetWCInfo("C:\\PathToMyFile\\MyFile.cc", true, true);
if (sub.IsSvnItem == true)
{
MessageBox.Show("versioned");
}
else
{
MessageBox.Show("not versioned");
}