2012-03-17 33 views
5

SharpSVNから変更されたファイルのリストを取得しようとしています。SharpSVNで変更されたファイルのリストを取得する方法(svn diff --summarize --xmlのように)

svn diff -r <startrev>:HEAD --summarize --xml 

誰かがこれを複製するSharpSVN迷路で適切な場所に私を指すことができます:私は、このようなコマンドライン上で必要なデータを得ることができますか?理想的には、変更されたファイルのコレクションを取得することができますが、必要に応じてストリームを解析できます。

答えて

2

そこにそれを行うための最も簡単な方法があるが、ここで、いくつかの異なるapprochです:

sharpsvnでWorkingCopyとリポジトリの状態の両方ですべてのファイルのステータスをretriveし、その後

それらの間を比較すること ステータスコマンドを使用します。

例:

using (SvnClient cl = new SvnClient()) 
    cl.Status(YourPath, new SvnStatusArgs { 
    Depth = SvnDepth.Infinity, ThrowOnError = true, 
    RetrieveRemoteStatus = true, Revision = SvnRevision.Head}, 
    new EventHandler<SvnStatusEventArgs>(
     delegate(object s, SvnStatusEventArgs e) { 
      switch (e.LocalContentStatus) { 
      case SvnStatus.Normal:break; 
      case SvnStatus.None: break; 
      case SvnStatus.NotVersioned: break; 
      case SvnStatus.Added:break; 
      case SvnStatus.Missing: break; 
      case SvnStatus.Modified: break; 
      case SvnStatus.Conflicted: break; 
      default: break; 
      } 
      switch (e.RemoteContentStatus) { 
      case SvnStatus.Normal:break; 
      case SvnStatus.None: break; 
      case SvnStatus.NotVersioned: break; 
      case SvnStatus.Added:break; 
      case SvnStatus.Missing: break; 
      case SvnStatus.Modified: break; 
      case SvnStatus.Conflicted: break; 
      default: break; 
      } 
     })); 
+1

このようにsvn diff --summarizeを呼び出すと、特定のリビジョンで2つのURLを比較します。ステータスは作業コピーを特定のリビジョンと比較します。 –

4

svn diff --summarizeのSharpSvn当量がSvnClient.DiffSummary()あります。彼らが来るとあなたは結果が欲しいとき

あなたは

using (var client = new SvnClient()) 
{ 
    var location = new Uri("http://my.example/repos/trunk"); 
    client.DiffSummary(new SvnUriTarget(location, 12), new SvnUriTarget(location, SvnRevision.Head), 
         delegate(object sender, SvnDiffSummaryEventArgs e) 
         { 
         // TODO: Handle result 
         }); 
} 

として使用することができます。

それとも、リストとして、最終的な結果にアクセスしたい場合は、.GetDiffSummary()を使用することができます。

+0

Subversion -1.7は、要約のためのUriターゲットのみをサポートしています。 1.8でこの制限が解除されるようです。 –

関連する問題