C# 如何在SharpSVN中获取已更改文件的列表(如svn diff--summary--xml)
我正在尝试从SharpSVN获取已更改文件的列表。我可以在命令行上获得所需的数据,如下所示: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
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中取消。