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étodo | Descrição |
---|---|
.GetWCInfo | Este 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 . |
.GetWCInfo2 | O mesmo que GetWCInfo() mas com um quarto parâmetro que fixa o equivalente ao switch de linha de comando -E . |
.Revision | A mais alta revisão submetida, na cópia de trabalho. Equivalente ao $WCREV$ . |
.Date | A data/tempo de submissão da mais alta revisão submetida. Equivalente ao $WCDATE$ . |
.Author | O autor da mais alta revisão de submissão, isto é, a última pessoa que submeteu alterações na cópia de trabalho. |
.MinRev | A revisão de actualização mínima, como mostrada em $WCRANGE$ |
.MaxRev | A revisão de actualização máxima, como mostrado em $WCRANGE$ |
.HasModifications | True se existem modificações locais |
.HasUnversioned | Verdadeiro se existirem itens não versionados. |
.Url | Substituído com o URL do repositório do caminho de cópia de trabalho usada em GetWCInfo . Equivalente a $WCURL$ . |
.IsSvnItem | True se o item é versionado. |
.NeedsLocking | True se o item tem a propriedade svn:needs-lock configurada. |
.IsLocked | True se o item está bloqueado. |
.LockCreationDate | String que representa a data em que o bloqueio foi criado, ou uma string vazia se o item não está bloqueado. |
.LockOwner | String que representa o autor do bloqueio, ou uma string vazia se o item não está bloqueado. |
.LockComment | A 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"); }