为什么SharpSVN SvnClient.Export(...)并不总是找到应该存在的文件?

时间:2010-06-23 18:01:13

标签: c# export sharpsvn

我正在使用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);
     }
}

任何帮助或建议都将不胜感激,谢谢。

2 个答案:

答案 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