我试图从SharpSVN获取已更改文件的列表。我能得到我需要这样的命令行上的数据:如何获取SharpSVN中已更改文件的列表(如svn diff --summarize --xml)
svn diff -r <startrev>:HEAD --summarize --xml
有人可以点我在SharpSVN正确的位置迷宫复制呢?理想情况下,我可以获取已更改文件的集合,但如果需要,我可以解析流。
我试图从SharpSVN获取已更改文件的列表。我能得到我需要这样的命令行上的数据:如何获取SharpSVN中已更改文件的列表(如svn diff --summarize --xml)
svn diff -r <startrev>:HEAD --summarize --xml
有人可以点我在SharpSVN正确的位置迷宫复制呢?理想情况下,我可以获取已更改文件的集合,但如果需要,我可以解析流。
没有做到这一点最简单的方式,但这里是一些不同的计算策略:
与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;
}
}));
的SharpSvn等效的svn diff --summarize
是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()
,如果你要访问的最终结果为列表。
请注意,Subversion -1.7仅支持Uri目标进行汇总。看起来这个限制将在1.8中解除。 – 2012-10-18 14:55:57
svn diff --summarize以这种方式调用比较两个URL在特定的修订版本。状态将工作副本与特定修订进行比较。 – 2012-10-18 14:50:53