Rozhraní COM

Pokud potřebujete přístup k informacím revizí Subversion z jiných programů, můžete použít COM rozhraní SubWCRev. Objekt vytvoření je SubWCRev.object a tyto metody jsou podporovány:

Tabulka 6.4. Podporované metody COM/automatizace

MetodaPopis
.GetWCInfoTato metoda prochází pracovní kopii a shromažďuje revize. Přirozeně je třeba toto zavolat předtím, než budete moci přistupovat k informacím pomocí zbývajících metod. První parametr je cesta. Druhý parametr by měl být true, pokud chcete zahrnout revize adresářů. Obdoba přepínače -f příkazové řádky. Třetí parametr by měl být true, pokud chcete zahrnout svn:externals. Obdoba přepínače -e příkazové řádky.
.GetWCInfo2Stejné jako GetWCInfo() ale se čtvrtým parametrem, který nastavuje ekvivalent přepínače příkazového řádku -E.
.RevisionNejvyšší odevzdaná revize pracovní kopie. Obdoba $WCREV$.
.DateDatum a čas odevzdaní nejvyšší odevzdané revize. Obdoba $WCDATE$.
.AuthorAutor nejvyšší odevzdané revize, to znamená, poslední člověk, který odevzdal změny do pracovní kopie.
.MinRevMinimální aktualizace revize, jak je uvedeno v $WCRANGE$
.MaxRevMaximální aktualizace revize, jak je uvedeno v $WCRANGE$
.HasModificationsTrue, pokud existují místní úpravy
.HasUnversionedPravda, pokud nejsou žádné položky bez verze
.UrlNahrazeno URL adresou úložiště cesty pracovní kopie použitou v GetWCInfo. Obdoba $WCURL$.
.IsSvnItemTrue, pokud má položka verzi.
.NeedsLockingTrue, pokud má položka nastavenu vlastnost svn:needs-lock.
.IsLockedTrue, pokud je položka uzamčena.
.LockCreationDateŘetězec reprezentující datum, kdy byl zámek vytvořen, nebo prázdný řetězec, pokud položka není uzamčena.
.LockOwnerŘetězec představující majitele zámku, nebo prázdný řetězec, pokud položka není uzamčena.
.LockCommentZpráva zadaná při vytvoření zámku.


Následující příklad ukazuje, jak by rozhraní mohlo být použito.

// testCOM.js - soubor javascript
// zkouškový skript pro SubWCRev COM/objekt automatizace

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 = "Revize = " + revObject1.Revision +
                "\nMin Revize = " + revObject1.MinRev +
                "\nMax Revize = " + revObject1.MaxRev +
                "\nDatum = " + revObject1.Date +
                "\nURL = " + revObject1.Url + "\nAutor = " +
                revObject1.Author + "\nMáZměny = " +
                revObject1.HasModifications + "\nJeZeSvn = " +
                revObject1.IsSvnItem + "\nPotřebaZámku = " +
                revObject1.NeedsLocking + "\nJeUzamčeno = " +
                revObject1.IsLocked + "\nDatumVznikuZámku = " +
                revObject1.LockCreationDate + "\nVlastníkZámku = " +
                revObject1.LockOwner + "\nKomentářUzamčení = " +
                revObject1.LockComment;
wcInfoString2 = "Revize = " + revObject2.Revision +
                "\nMin Revize = " + revObject2.MinRev +
                "\nMax Revize = " + revObject2.MaxRev +
                "\nDatum = " + revObject2.Date +
                "\nURL = " + revObject2.Url + "\nAutor = " +
                revObject2.Author + "\nMáZměny = " +
                revObject2.HasModifications + "\nJeZeSvn = " +
                revObject2.IsSvnItem + "\nPotřebaZámku = " +
                revObject2.NeedsLocking + "\nJeUzamčeno = " +
                revObject2.IsLocked + "\nDatumVznikuZámku = " +
                revObject2.LockCreationDate + "\nVlastníkZámku = " +
                revObject2.LockOwner + "\nKomentářUzamčení = " +
                revObject2.LockComment;
wcInfoString3 = "Revize = " + revObject3.Revision +
                "\nMin Revize = " + revObject3.MinRev +
                "\nMax Revize = " + revObject3.MaxRev +
                "\nDatum = " + revObject3.Date +
                "\nURL = " + revObject3.Url + "\nAutor = " +
                revObject3.Author + "\nMáZměny = " +
                revObject3.HasModifications + "\nJeZeSvn = " +
                revObject3.IsSvnItem + "\nPotřebaZámku = " +
                revObject3.NeedsLocking + "\nJeUzamčeno = " +
                revObject3.IsLocked + "\nDatumVznikuZámku = " +
                revObject3.LockCreationDate + "\nVlastníkZámku = " +
                revObject3.LockOwner + "\nKomentářUzamčení = " +
                revObject3.LockComment;
wcInfoString4 = "Revize = " + revObject4.Revision +
                "\nMin Revize = " + revObject4.MinRev +
                "\nMax Revize = " + revObject4.MaxRev +
                "\nDatum = " + revObject4.Date +
                "\nURL = " + revObject4.Url + "\nAutor = " +
                revObject4.Author + "\nMáZměny = " +
                revObject4.HasModifications + "\nJeZeSvn = " +
                revObject4.IsSvnItem + "\nPotřebujeZámek = " +
                revObject4.NeedsLocking + "\nJeUzamčeno = " +
                revObject4.IsLocked + "\nDatumVznikuZámku = " +
                revObject4.LockCreationDate + "\nVlastníkZámku = " +
                revObject4.LockOwner + "\nKomentářUzamčení = " +
                revObject4.LockComment;

WScript.Echo(wcInfoString1);
WScript.Echo(wcInfoString2);
WScript.Echo(wcInfoString3);
WScript.Echo(wcInfoString4);

Následující seznam je příkladem toho, jak používat SubWCRev COM objekt z C#:

using LibSubWCRev;
SubWCRev sub = new SubWCRev();
sub.GetWCInfo("C:\CestakMemuSouboru\Mujsoubor.cc", true, true);
if (sub.IsSvnItem == true)
{
    MessageBox.Show("s verzi");
}
else
{
    MessageBox.Show("bez verze");
}