Manuals

Interface COM

Se necessitas de aceder à informação de revisão do Subversion a partir de outros programas, podes usar a interface COM do SubWCRev. O objecto a criar é o SubWCRev.object e os métodos suportados são os seguintes:

Tabela 6.4. Métodos COM/automação suportados

MétodoDescrição
.GetWCInfoEste método percorre a cópia de trabalho, reunindo a informação de revisão. Naturalmente, deverás chamar este método antes de poderes aceder à informação usando os restantes métodos. O primeiro parâmetro é o caminho. O segundo parâmetro deverá ser true se queres incluir as revisões das pastas. Equivalente à opção de linha de comando -f. O terceiro parâmetro deverá ser true se queres incluir svn:externals. Equivalente à opção de linha de comando -e.
.GetWCInfo2O mesmo que GetWCInfo() mas com um quarto parâmetro que fixa o equivalente ao switch de linha de comando -E.
.RevisionA mais alta revisão submetida, na cópia de trabalho. Equivalente ao $WCREV$.
.DateA data/tempo de submissão da mais alta revisão submetida. Equivalente ao $WCDATE$.
.AuthorO autor da mais alta revisão de submissão, isto é, a última pessoa que submeteu alterações na cópia de trabalho.
.MinRevA revisão de actualização mínima, como mostrada em $WCRANGE$
.MaxRevA revisão de actualização máxima, como mostrado em $WCRANGE$
.HasModificationsTrue se existem modificações locais
.HasUnversionedVerdadeiro se existirem itens não versionados.
.UrlSubstituído com o URL do repositório do caminho de cópia de trabalho usada em GetWCInfo. Equivalente a $WCURL$.
.IsSvnItemTrue se o item é versionado.
.NeedsLockingTrue se o item tem a propriedade svn:needs-lock configurada.
.IsLockedTrue se o item está bloqueado.
.LockCreationDateString que representa a data em que o bloqueio foi criado, ou uma string vazia se o item não está bloqueado.
.LockOwnerString que representa o autor do bloqueio, ou uma string vazia se o item não está bloqueado.
.LockCommentA mensagem introduzida quando o bloqueio foi criado.


O seguinte exemplo mostra como a interface pode ser usada.

// testCOM.js - ficheiro javascript
// script de teste para o 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);

A seguinte listagem é um exemplo de como usar o objecto COM SubWCRev a partir de C#:

using LibSubWCRev;
SubWCRev sub = new SubWCRev();
sub.GetWCInfo("C:\\PathToMyFile\\MyFile.cc", true, true);
if (sub.IsSvnItem == true)
{
    MessageBox.Show("versionado");
}
else
{
    MessageBox.Show("nao versionado");
}

TortoiseSVN homepage