我正在使用Export()成员函数来获取正在运行的特定修订版本的文件,但出于某种原因,在其他情况下则不然。对于所有修改过的路径,它似乎正在使用该修订中删除的,有时添加的文件,我得到了一个例外,说明在使用的url中没有文件。当我在这些路径上使用TurtoiseSVNs“Copy Revision to ...”时,它工作正常,我只是想知道我是否遗漏了SharpSVN的东西,我希望修改所有修改过的文件的完整版本。下面是我的代码的总体思路:
if (logentry.ChangedPaths != null)
{
foreach (SvnChangeItem svnChangeItem in logentry.ChangedPaths)
{
SvnExportArgs ex = new SvnExportArgs();
ex.Revision = revisionNum;
client.Export(SvnTarget.FromUri(new Uri(pathInsideRepo)), exportFile, ex);
}
}
任何帮助或建议都将不胜感激,谢谢。
答案 0 :(得分:2)
我发现使用SvnUriTarget而不仅仅是使用SvnExportArgs的uri允许我获取正确的信息。不太确定为什么它们不同但它有效。
所以代替我使用的导出:
client.Export(new SvnUriTarget(new Uri(pathInsideRepo), revisionNumber), exportFile, ex);
我找到的答案是link text
答案 1 :(得分:2)
命令行客户端具有相同的行为。发生的事情是指向文件的URL可以来来去去。这意味着指向现在已删除的文件的URL无效,除非您指定要使用较旧的URL。这称为钉修订。
阅读svnbook中的peg revisions。