COM Schnittstelle

Wenn sie Zugriff auf Subversion Revisionsinformationen aus anderen Programmen benötigen, können Sie die COM Schnittstelle von SubWCRev benutzen. Das zu erzeugende Objekt heißt SubWCRev.object und unterstützt die folgenden Methoden:

Tabelle 6.4. Unterstützte COM-Automatisierungen

MethodBeschreibung
.GetWCInfoDiese Methode durchläuft die Arbeitskopie und ermittelt die Revisionsinformationen. Sie muss vor den Methoden aufgerufen werden, die auf diese Informationen zugreifen sollen. Der erste Parameter ist der Pfad. Der zweite Parameter sollte true sein, falls Sie Ordnerrevisionen einschließen wollen. Entspricht dem Schalter -f. Der dritte Parameter sollte true sein, falls Sie svn:externals einschließen wollen. Entspricht dem Schalter -e.
.GetWCInfo2Dasselbe wie GetWCInfo(), aber mit einem vierten Parameter, der das Äquivalent zum Kommandozeilenschalte -E setzt.
.RevisionDie höchste übertragene Revision in der Arbeitskopie. Entspricht $WCREV$.
.DateDatum und Uhrzeit der höchsten übertragenen Revision. Entspricht $WCDATE$.
.AuthorDer Autor der höchsten übertragenen Revision, das heißt der Person, die die Änderungen in die Arbeitskopie übertragen hat.
.MinRevDie minimale aktualisierte Revision, wie in $WCRANGE$ angezeigt.
.MaxRevDie maximale aktualisierte Revision, wie in $WCRANGE$ angezeigt.
.HasModificationsTrue, falls es lokale Änderungen gibt.
.HasUnversionedTrue, wenn nicht versionierte Objekte vorhanden sind
.UrlWird durch die URL des Projektarchivs ersetzt, auf das die an GetWCInfo übergebene Arbeitskopie zeigt. Entspricht $WCURL$.
.IsSvnItemTrue falls das Objekt versioniert ist.
.NeedsLockingTrue falls die svn:needs-lock Eigenschaft des Objekts gesetzt ist.
.IsLockedTrue falls das Objekt gesperrt ist.
.LockCreationDateZeichenkette, die das Datum enthält an dem die Sperre erzeugt wurde. Leer, falls das Objekt nicht gesperrt ist.
.LockOwnerZeichenkette, die den Eigentümer der Sperre enthält. Leer, falls das Objekt nicht gesperrt ist.
.LockCommentDie Meldung, die eingegeben wurde als die Sperre erzeugt wurde.


Das folgende Beispiel zeigt, wie die Schnittstelle genutzt werden kann.

// testCOM.js - javascript file
// Testskript für das SubWCRev COM/Automatisierungsobjekt

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);

Das folgende Beispiel zeigt, wie die SubWCRev COM-Schnittstelle aus C# heraus genutzt werden kann.

using LibSubWCRev;
SubWCRev sub = new SubWCRev();
sub.GetWCInfo("C:\\PfadZuMeinerDatei\\MeineDatei.cc", true, true);
if (sub.IsSvnItem == true)
{
    MessageBox.Show("versioniert");
}
else
{
    MessageBox.Show("nicht versioniert");
}