请考虑以下情况:
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
答案 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()
文件回到存储库,你已经完成了:)
诺亚