他のプログラムから Subversion のリビジョン情報にアクセスする必要がある場合、SubWCRev のCOM インターフェイスを使用できます。作成するオブジェクトは SubWCRev.object
で、以下のメソッドをサポートしています。
表6.4 COM オートメーションのサポート
メソッド | 説明 |
---|---|
.GetWCInfo | この方法は作業コピーを横断してリビジョン情報を集めます。当然、以下のメソッドを呼び出す前に、これを呼び出さなくてはなりません。第 1 引数はパスです。第 2 引数は、フォルダーのリビジョンを含める場合に true としてください。コマンドラインスイッチ -f と等価です。第 3 引数は、svn:externals を含める場合に true としてください。コマンドラインスイッチ -e と等価です。 |
.GetWCInfo2 | GetWCInfo() と同様ですが、第4引数は -E スイッチに設定した場合と等価になります。 |
.Revision | 最新コミット時の作業コピーのリビジョンです。$WCREV$ と同じです。 |
.Date | 最新コミット時のコミット日時です。$WCDATE$ と同じです。 |
.Author | もっとも大きいコミットリビジョン番号の作者。これは変更した作業コピーを最後にコミットした人などです。 |
.MinRev | $WCRANGE$ で参照できる更新リビジョンの最小値 |
.MaxRev | $WCRANGE$ で参照できる更新リビジョンの最大値 |
.HasModifications | ローカルに変更がある場合 True |
.HasUnversioned | バージョン管理外の項目がある場合はtrue |
.Url | GetWCInfo で使用された作業コピーのリポジトリ上の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.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("バージョン管理対象"); } else { MessageBox.Show("バージョン管理対象外"); }