Jeśli potrzebujecie dostępu do informacji wersji Subversion z innych programów, możecie skorzystać z interfejsu COM SubWCRev. Należy utworzyć obiekt SubWCRev.object
, obsługujący następujące metody:
Tabela 6.4. COM/wspierane metody automatyzacji
Metoda | Opis |
---|---|
.GetWCInfo | Ta metoda przeszukuje kopię roboczą gromadząc informacje o wersji. Oczywiście należy ją wykonać, zanim będzie można uzyskać dostęp do informacji przy użyciu pozostałych metod. Pierwszy parametr to ścieżka. Drugi parametr powinien być true, jeśli chcecie dołączyć wersje folderów. Odpowiednik przełącznika -f dla linii poleceń. Trzeci parametr powinien być true, jeśli chcecie dołączyć svn:externals. Odpowiednik przełącznika -e dla linii poleceń. |
.GetWCInfo2 | To samo co GetWCInfo() ale z czwartym parametrem ustawiającym równoważnik przełącznika -E linii poleceń. |
.Revision | Najwyższa zatwierdzona wersja w kopii roboczej. Odpowiednik $WCREV$ . |
.Date | Data/czas zatwierdzenia dla najwyższej wersji zatwierdzenia. Odpowiednik $WCDATE$ . |
.Author | Autor najwyższej wersji zatwierdzenia, to jest ostatnia osoba, która dokonała zmian w kopii roboczej. |
.MinRev | Minimalna wersja aktualizacji, jak pokazano w $WCRANGE$ |
.MaxRev | Maksymalna wersja aktualizacji, jak pokazano w $WCRANGE$ |
.HasModifications | Prawdziwe jeśli występują lokalne zmiany |
.HasUnversioned | Prawda jeśli znajdują się tu niewersjonowane obiekty |
.Url | Zastępowane przez URL repozytorium dla ścieżki kopii roboczej użytej w GetWCInfo . Odpowiednik $WCURL$ . |
.IsSvnItem | Prawdziwe jeśli element jest wersjonowany. |
.NeedsLocking | Prawdziwe jeśli element ma ustawiony atrybut svn:needs-lock . |
.IsLocked | Prawdziwe jeśli element jest zablokowany. |
.LockCreationDate | Ciąg znaków reprezentujący datę kiedy utworzono blokadę lub pusty ciąg znaków jeśli element nie jest zablokowany. |
.LockOwner | Ciąg znaków reprezentujący właściciela blokady lub pusty ciąg znaków jeśli element nie jest zablokowany. |
.LockComment | Wiadomość wprowadzana podczas nakładania blokady. |
Poniższy przykład pokazuje, jak interfejs może być używany.
// testCOM.js - plik javascript // skrypt testowy obiektu SubWCRev COM/Automation 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);
Poniższy listing jest przykładem, jak korzystać z obiektu COM SubWCRev w 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"); }