SvnLook クライアントは、特にリポジトリ フックで使用することを目的としています。コミットされていないリビジョンへのアクセスを許可するため、他の引数が必要です。(これは「svnlook」コマンドに相当する SharpSvn です。「svn」に相当するものが必要な場合は、SvnClient を参照してください)。
ルックオリジンは次のいずれかです: * リポジトリパスとトランザクション名 * またはリポジトリパスとリビジョン番号
たとえば、pre-commit フックでは、リビジョンはまだコミットされていないため、通常のように公開 URL 経由でアクセスすることはできません。
ドキュメントには次のように記載されています(pre-commit.tmpl内):
# The pre-commit hook is invoked before a Subversion txn is
# committed. Subversion runs this hook by invoking a program
# (script, executable, binary, etc.) named 'pre-commit' (for which
# this file is a template), with the following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] TXN-NAME (the name of the txn about to be committed)
SharpSvn は、以下を提供することでお客様を支援します。
SvnHookArguments ha;
if (!SvnHookArguments.ParseHookArguments(args, SvnHookType.PostCommit, false, out ha))
{
Console.Error.WriteLine("Invalid arguments");
Environment.Exit(1);
}
これらの引数を解析します。(この場合は非常に単純ですが、より高度なフックがあります。フックは新しい Subversion バージョンで新しい引数を受け取ることができます)。必要な値は、ha の .LookOrigin プロパティにあります。
特定のリビジョン範囲 (1234 ~ 4567) のログ メッセージが必要な場合は、SvnLookClient を参照しないでください。
using(SvnClient cl = new SvnClient())
{
SvnLogArgs la = new SvnLogArgs();
Collection<SvnLogEventArgs> col;
la.Start = 1234;
la.End = 4567;
cl.GetLog(new Uri("http://svn.collab.net/repos/svn"), la, out col))
}