2012-03-17 158 views

回答

2

没有做到这一点最简单的方式,但这里是一些不同的计算策略:

与sharpsvn使用状态命令以检索两个WorkingCopy和库状态的所有文件的状态,然后将它们

之间的比较

例如:

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以这种方式调用比较两个URL在特定的修订版本。状态将工作副本与特定修订进行比较。 – 2012-10-18 14:50:53

4

的SharpSvn等效的svn diff --summarizeSvnClient.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中解除。 – 2012-10-18 14:55:57

相关问题