COM インターフェース

他のプログラムから Subversion のリビジョン情報にアクセスする必要がある場合、SubWCRev のCOM インターフェースを使用できます。作成するオブジェクトは SubWCRev.object で、以下のメソッドをサポートしています。

表5.3 COM・オートメーションのサポート

メソッド説明
.GetWCInfoこの方法は作業コピーを横断してリビジョン情報を集めます。当然、以下のメソッドを呼び出す前に、これを呼び出さなくてはなりません。第 1 引数はパスです。第 2 引数は、フォルダのリビジョンを含める場合に true としてください。コマンドラインスイッチ -f と等価です。第 3 引数は、svn:externals を含める場合に true としてください。コマンドラインスイッチ -e と等価です。
.Revision作業コピーのもっとも大きいコミットリビジョン番号。$WCREV$ と等価です。
.Dateもっとも大きいコミットリビジョンのコミット日時。$WCDATE$ と等価です。
.Authorもっとも大きいコミットリビジョン番号の作者。これは変更した作業コピーを最後にコミットした人などです。
.MinRev$WCRANGE$ で参照できる更新リビジョンの最小値
.MaxRev$WCRANGE$ で参照できる更新リビジョンの最大値
.HasModificationsローカルに変更がある場合 True
.UrlGetWCInfo を使用して、作業コピーパスのリポジトリ URL に置換します。$WCURL$ と等価です。
.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.GetWCInfo(
    filesystem.GetAbsolutePathName("..\\.."), 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);