1

请考虑以下场景:
1. 用户 A 创建并提交一个文件(比如说 file1.txt)。
2. 用户 B 从存储库中删除该文件。
3. 用户 A 在他的本地工作副本中有该文件,并想恢复它。用户在完成发现Update()

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

到目前为止,我已经尝试过:
-Client.Revert()紧随其后,Update但我没有看到任何变化。
- Client.Merge(local_working_copy, SvnUriTarget_of_repository, revision_range_between_the_previous_and_new)- 还是没有变化。
- Client.DiffMerge(),其中目标路径是文件的本地路径,merge_from 是版本库中上一个版本号的路径,merge_to 是新版本号的本地路径。- 我收到一个异常,说该文件不受版本控制。无法添加,因为它在本地不再存在。当我将目标路径替换为存储库路径时,我收到一个异常,说这不是工作副本。

请帮忙,
诺亚

4

2 回答 2

2

您应该反转修订属性,因为您正在反转合并。这意味着您必须创建一个SvnRevisionRange赞:

new SvnRevisionRange(newRevision, oldRevision);

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

于 2010-09-26T08:58:12.013 回答
-2

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

运行更新时,使用这个有用的答案来订阅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()将文件返回到存储库,你就完成了:)

诺亚

于 2010-09-26T11:23:57.243 回答