如何在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迷宫中的正确位置来复制这个吗?理想情况下,我可以得到一个更改文件的集合,但如果需要的话,我可以解析一个流。
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;
}
}));