Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SharpSVN中获取已更改文件的列表(如svn diff--summary--xml)_C#_Svn_Sharpsvn - Fatal编程技术网

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

C# 如何在SharpSVN中获取已更改文件的列表(如svn diff--summary--xml),c#,svn,sharpsvn,C#,Svn,Sharpsvn,我正在尝试从SharpSVN获取已更改文件的列表。我可以在命令行上获得所需的数据,如下所示: svn diff -r <startrev>:HEAD --summarize --xml svn diff-r:HEAD--summary--xml 有人能告诉我在SharpSVN迷宫的正确位置复制这个吗?理想情况下,我可以获得一组更改过的文件,但如果需要,我可以解析流。有一种最简单的方法可以做到这一点,但这里有一些不同的方法: 对于sharpsvn,使用Status命令检索Worki

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

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

有人能告诉我在SharpSVN迷宫的正确位置复制这个吗?理想情况下,我可以获得一组更改过的文件,但如果需要,我可以解析流。

有一种最简单的方法可以做到这一点,但这里有一些不同的方法:

对于sharpsvn,使用Status命令检索WorkingCopy和Repository状态下的所有文件状态,然后对它们进行比较

例如:

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;
          }
       }));
使用(SvnClient cl=new SvnClient())
cl.Status(您的路径、新SVNSTATUS参数{
深度=SvnDepth.无穷大,ThrowOnError=真,
RetrieveRemoteStatus=true,Revision=SvnRevision.Head},
新事件处理程序(
委托(对象s、SvnStatusEventArgs e){
开关(例如LocalContentStatus){
案例SvnStatus.正常:中断;
案例SvnStatus.无:中断;
案例SvnStatus.NotVersioned:中断;
案例SvnStatus.新增:中断;
案例SvnStatus.缺失:中断;
案例SvnStatus.修改:中断;
案例SvnStatus.冲突:中断;
默认:中断;
}
开关(如RemoteContentStatus){
案例SvnStatus.正常:中断;
案例SvnStatus.无:中断;
案例SvnStatus.NotVersioned:中断;
案例SvnStatus.新增:中断;
案例SvnStatus.缺失:中断;
案例SvnStatus.修改:中断;
案例SvnStatus.冲突:中断;
默认:中断;
}
}));

与svn diff--summary相当的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()

svn diff--summary以这种方式调用,比较特定版本的两个URL。Status将工作副本与特定版本进行比较。请注意,Subversion-1.7仅支持用于汇总的Uri目标。看起来这一限制将在1.8中取消。