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
Methode | Beschreibung |
---|---|
.GetWCInfo | Diese 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 . |
.GetWCInfo2 | Dasselbe wie GetWCInfo() , aber mit einem vierten Parameter, der das Äquivalent zum Kommandozeilenschalter -E setzt. |
.Revision | Die höchste übertragene Revision in der Arbeitskopie. Entspricht $WCREV$ . |
.Date | Datum und Uhrzeit der höchsten übertragenen Revision. Entspricht $WCDATE$ . |
.Author | Der Autor der höchsten übertragenen Revision, das heißt, die letzte Person, die die Änderungen in die Arbeitskopie übertragen hat. |
.MinRev | Die minimale aktualisierte Revision, wie in $WCRANGE$ angezeigt. |
.MaxRev | Die maximale aktualisierte Revision, wie in $WCRANGE$ angezeigt. |
.HasModifications | True , wenn es lokale Änderungen gibt. |
.HasUnversioned | True, wenn nicht versionierte Objekte vorhanden sind |
.Url | Wird durch die URL des Projektarchivs ersetzt, auf das die an GetWCInfo übergebene Arbeitskopie zeigt. Entspricht $WCURL$ . |
.IsSvnItem | True , wenn das Objekt versioniert ist. |
.NeedsLocking | True , wenn die svn:needs-lock -Eigenschaft des Objekts gesetzt ist. |
.IsLocked | True , wenn das Objekt gesperrt ist. |
.LockCreationDate | Zeichenkette, die das Datum enthält, an dem die Sperre erzeugt wurde. Leer, wenn das Objekt nicht gesperrt ist. |
.LockOwner | Zeichenkette, die den Eigentümer der Sperre enthält. Leer, wenn das Objekt nicht gesperrt ist. |
.LockComment | Die 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"); }