Manuals

Interfejs COM

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

MetodaOpis
.GetWCInfoTa 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ń.
.GetWCInfo2To samo co GetWCInfo() ale z czwartym parametrem ustawiającym równoważnik przełącznika -E linii poleceń.
.RevisionNajwyższa zatwierdzona wersja w kopii roboczej. Odpowiednik $WCREV$.
.DateData/czas zatwierdzenia dla najwyższej wersji zatwierdzenia. Odpowiednik $WCDATE$.
.AuthorAutor najwyższej wersji zatwierdzenia, to jest ostatnia osoba, która dokonała zmian w kopii roboczej.
.MinRevMinimalna wersja aktualizacji, jak pokazano w $WCRANGE$
.MaxRevMaksymalna wersja aktualizacji, jak pokazano w $WCRANGE$
.HasModificationsPrawdziwe jeśli występują lokalne zmiany
.HasUnversionedPrawda jeśli znajdują się tu niewersjonowane obiekty
.UrlZastępowane przez URL repozytorium dla ścieżki kopii roboczej użytej w GetWCInfo. Odpowiednik $WCURL$.
.IsSvnItemPrawdziwe jeśli element jest wersjonowany.
.NeedsLockingPrawdziwe jeśli element ma ustawiony atrybut svn:needs-lock.
.IsLockedPrawdziwe jeśli element jest zablokowany.
.LockCreationDateCiąg znaków reprezentujący datę kiedy utworzono blokadę lub pusty ciąg znaków jeśli element nie jest zablokowany.
.LockOwnerCiąg znaków reprezentujący właściciela blokady lub pusty ciąg znaków jeśli element nie jest zablokowany.
.LockCommentWiadomość 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");
}

TortoiseSVN homepage