如果您需要從其他程式存取 Subversion 版本資訊,您可以使用 SubWCRev 的 COM 介面。要建立的物件是 SubWCRev.object,並且支援下列方法
表格 6.4. 支援的 COM/自動化方法
| 方法 | 說明 |
|---|---|
| .GetWCInfo | 此方法會遍歷工作副本,收集版本資訊。理所當然地,您必須先呼叫此方法,才能使用其餘的方法存取資訊。第一個參數是路徑。如果您想要包含資料夾版本,第二個參數應該為 true。相當於 -f 命令列開關。如果您想要包含 svn:externals,第三個參數應該為 true。相當於 -e 命令列開關。 |
| .GetWCInfo2 | 與 GetWCInfo() 相同,但具有第四個參數,該參數設定相當於 -E 命令列開關。 |
| .Revision | 工作副本中最高的提交版本。相當於 $WCREV$。 |
| .Date | 最高提交版本的提交日期/時間。相當於 $WCDATE$。 |
| .Author | 最高提交版本的作者,也就是說,最後一位提交工作副本變更的人。 |
| .MinRev | 最小更新版本,如 $WCRANGE$ 中所示 |
| .MaxRev | 最大更新版本,如 $WCRANGE$ 中所示 |
| .HasModifications | 如果存在本機修改則為 True |
| .HasUnversioned | 如果存在未版本控制的項目則為 True |
| .Url | 替換為在 GetWCInfo 中使用的工作副本路徑的儲存庫 URL。相當於 $WCURL$。 |
| .RepoRoot | 替換為儲存庫根目錄的 URL。相當於 $REPOROOT$。 |
| .IsSvnItem | 如果項目已版本控制則為 True。 |
| .NeedsLocking | 如果項目已設定 svn:needs-lock 屬性則為 True。 |
| .IsLocked | 如果項目已鎖定則為 True。 |
| .LockCreationDate | 字串,表示鎖定建立的日期;如果項目未鎖定,則為空字串。 |
| .LockOwner | 字串,表示鎖定擁有者;如果項目未鎖定,則為空字串。 |
| .LockComment | 建立鎖定時輸入的訊息。 |
以下範例示範如何使用此介面。
// 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);
以下清單是一個範例,說明如何從 C# 使用 SubWCRev COM 物件
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");
}