COM-rajapinta

Jos tarvitset Subversion-versiotietoja muissa ohjelmissa, voit käyttää SubWCRev-ohjelman COM-rajapintaa. Luotava olio on SubWCRev.object, joka tukee seuraavia operaatioita:

Taulu 6.4. Tuetut COM/automaatiomenetelmät

MenetelmäKuvaus
.GetWCInfoOperaatio käy läpi työkopiosi keräten kaiken versiointitiedon. Sinun on ensin kutsuttava tätä, ennen kuin voit käsitellä haettuja tietoja. Ensimmäinen valitsin on polku. Toisen valitsimen tulisi olla true jos haluat ottaa mukaan kansio-ominaisuudet. Sama kuin komentorivivalitsin -f. Kolmannen valitsimen tulisi olla tosi, jos haluat sisällyttää ulkoiset viitteet (svn:externals). Sama kuin komentorivivalitsin -e.
.GetWCInfo2Kuten GetWCInfo(), mutta neljännen parametrin kera, joka asettaa komentoriviparametrille -E saman arvon.
.RevisionTyökopion suurin versionumero. Sama kuin $WCREV$.
.DateTyökopion suurimman version toimituspäiväys. Sama kuin $WCDATE$.
.AuthorSuurimman version tekijä, ts. viimeinen henkilö, joka toimitti muutoksia työkopioon.
.MinRevTyökopion pienin päivitetty versio, ks. $WCRANGE$.
.MaxRevTyökopion suurin päivitetty versio, kuten $WCRANGE$ kertoo.
.HasModificationsTosi jos työkopiossa on paikallisia muutoksia.
.HasUnversionedTosi, jos kohteessa on versioimattomia tiedostoja
.UrlKorvataan GetWCInfo käytetyn työkopiopolun arkistopaikantimella. Sama kuin $WCURL$.
.IsSvnItemTosi, jos kohde on versioitu.
.NeedsLockingTosi, jos kohteella on ominaisuus svn:needs-lock asetettuna.
.IsLockedTosi, jos kohde on lukittu.
.LockCreationDateMerkkijono, joka sisältää lukon luontipäiväyksen, tai tyhjä merkkijono, jos kohde ei ole lukittu.
.LockOwnerMerkkijono, joka sisältää lukon omistajan, tai tyhjä merkkijono, jos kohde ei ole lukittu.
.LockCommentLukkoa luotaessa annettu viesti.


Seuraava esimerkki näyttää, miten rajapintaa voi käyttää.

// testCOM.js - javascript file
// test script for the SubWCRev COM/Automation-object

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);

Seuraava esimerkki näyttää, miten SubWCRev-ohjelman COM-rajapintaa voi käyttää C#-kielellä:

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");
}