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

MethodeBeschreibung
.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, wenn Sie Ordnerrevisionen einschließen wollen. Entspricht dem Schalter -f. Der dritte Parameter sollte true sein, wenn Sie svn:externals einschließen wollen. Entspricht dem Schalter -e.
.GetWCInfo2Dasselbe wie GetWCInfo(), aber mit einem vierten Parameter, der das Äquivalent zum Kommandozeilenschalter -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, die letzte 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, wenn 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, wenn das Objekt versioniert ist.
.NeedsLockingTrue, wenn die svn:needs-lock-Eigenschaft des Objekts gesetzt ist.
.IsLockedTrue, wenn das Objekt gesperrt ist.
.LockCreationDateZeichenkette, die das Datum enthält, an dem die Sperre erzeugt wurde. Leer, wenn das Objekt nicht gesperrt ist.
.LockOwnerZeichenkette, die den Eigentümer der Sperre enthält. Leer, wenn 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");
}