我正在尝试从SharpSVN获取已更改文件的列表。我可以在命令行上获取我需要的数据,如下所示:
svn diff -r <startrev>:HEAD --summarize --xml
有人能指出我在SharpSVN迷宫中的正确位置来复制这个吗?理想情况下,我可以获取已更改文件的集合,但如果需要,我可以解析流。
答案 0 :(得分:4)
相当于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()
。
答案 1 :(得分:2)
这是最简单的方法,但这里有一些不同的方法:
使用sharpsvn使用状态命令来检索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;
}
}));