SharpSvn:恢复已删除文件的正确方法

时间:2010-09-26 08:39:52

标签: c# sharpsvn

请考虑以下情况:
1.用户A创建并提交文件(假设为file1.txt) 2.用户B从存储库中删除此文件 3.用户A在其本地工作副本中包含该文件,并希望将其恢复。用户在<{1}}完成后发现 <{>}。

实现这一目标的正确方法是什么?

到目前为止,我已经尝试过:
- Update()后跟Client.Revert(),但我认为没有变化 - Update - 仍然没有变化 - Client.Merge(local_working_copy, SvnUriTarget_of_repository, revision_range_between_the_previous_and_new),其中目标路径是文件的本地路径,merge_from是存储库中具有先前修订号的路径,merge_to是具有新修订的本地路径。 - 我得到一个例外,说该文件不受版本控制。它不能被添加,因为它不再在本地存在。当我将目标路径替换为存储库路径时,我得到一个例外,说这不是一个工作副本。

请帮忙,
NOA

2 个答案:

答案 0 :(得分:2)

您应该撤消修订属性,因为您正在撤消合并。这意味着您必须创建SvnRevisionRange之类的:

new SvnRevisionRange(newRevision, oldRevision);

当您从旧到新使用时,您尝试再次应用相同的更改(这是一个无操作,因为它已经发生)。

答案 1 :(得分:-2)

对于其他可能需要此项且之前没有SVN经验的人:

运行更新时,请使用this useful answer 订阅Update()事件。这样,您可以保存已删除文件的所有名称(或您感兴趣的任何其他操作)。

然后,在Update()完成后,您可以按如下方式使用Copy()
Copy(new SvnUriTarget(path/to/file/in/repository, new SvnRevision(the_old_revision_which_had_the_files)), local/path/to/file);

现在剩下的就是Commit()文件回到存储库,你已经完成了:)

诺亚