如何在SharpSVN中获得更改文件的列表(如svn-diff--summary--xml)

本文关键字:文件 列表 svn-diff--summary--xml SharpSVN | 更新日期: 2023-09-27 18:28:01

我正在尝试从SharpSVN获取更改文件的列表。我可以在命令行上获得我需要的数据,如下所示:

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

有人能给我指SharpSVN迷宫中的正确位置来复制这个吗?理想情况下,我可以得到一个更改文件的集合,但如果需要的话,我可以解析一个流。

如何在SharpSVN中获得更改文件的列表(如svn-diff--summary--xml)

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()

有一种最简单的方法,但这里有一些不同的方法:

使用sharpsvn时,使用Status命令检索WorkingCopy和Repository Status中的所有文件状态,然后在它们之间进行比较

示例:

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;
          }
       }));