C# SharpSvn:恢复已删除文件的正确方法 请考虑以下情况: 1.用户A创建并提交一个文件,比如file1.txt。 2.用户B从存储库中删除此文件。 3.用户A在其本地工作副本中拥有该文件,并希望将其还原。用户在更新完成后发现

C# SharpSvn:恢复已删除文件的正确方法 请考虑以下情况: 1.用户A创建并提交一个文件,比如file1.txt。 2.用户B从存储库中删除此文件。 3.用户A在其本地工作副本中拥有该文件,并希望将其还原。用户在更新完成后发现,c#,sharpsvn,C#,Sharpsvn,实现这一目标的正确方法是什么 到目前为止,我已经尝试: -客户端。还原后进行更新,但我看不到任何更改。 -Client.Mergelocal_working_copy,_repository的SvnUriTarget_,修订版_range_在_之前的_和新的_之间-仍然没有更改。 -Client.DiffMerge,其中目标路径是文件的本地路径,merge_from是存储库中具有以前版本号的路径,merge_to是具有新版本的本地路径。-我收到一个异常,表示该文件不受版本控制。无法添加,因为它在

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

到目前为止,我已经尝试: -客户端。还原后进行更新,但我看不到任何更改。 -Client.Mergelocal_working_copy,_repository的SvnUriTarget_,修订版_range_在_之前的_和新的_之间-仍然没有更改。 -Client.DiffMerge,其中目标路径是文件的本地路径,merge_from是存储库中具有以前版本号的路径,merge_to是具有新版本的本地路径。-我收到一个异常,表示该文件不受版本控制。无法添加,因为它在本地已不存在。当我将目标路径替换为存储库路径时,我得到一个异常,表示这不是工作副本

请帮忙,
Noa

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


当您使用“从旧到新”时,您试图再次应用相同的更改,这是一个不可操作的更改,因为它已经发生。

对于可能需要此更改并且以前没有SVN经验的任何其他人:

运行更新时,使用订阅更新事件。通过这种方式,您可以保存已删除文件的所有名称或您感兴趣的任何其他操作

然后,在完成更新后,您可以按如下方式使用Copy: Copynew SvnUriTargetpath/to/file/in/repository,new SvnRevision\u old\u revision\u其中有\u文件,local/path/to/file

现在只需将文件提交回存储库,就完成了:


Noa

好的,我想我发现了一部分——我可以使用带有所需修订号的Update。这会将文件恢复到工作副本,但即使我再次提交,它也会显示为过期,如果我再次更新,它将再次被删除。好的,这确实会造成不同,但它也会删除已添加的其他文件,并且状态检查仍然显示恢复的文件已过期:谢谢你的回答。你也可以只恢复文件而不是整个工作副本。要做到这一点,传递一个带有Uri的SvnUriTarget,修订版可以是oldRevision,这是为了指示您需要什么文件,但将内容复制回来实际上是一个非常糟糕的主意。最好只还原要还原的文件。正如我提到的,我以前没有使用Svn或SharpSvn的经验。这是迄今为止我发现的最好的,但是如果您想发布一段代码来替换复制操作,我将非常感激。请记住,我需要删除的文件成为新版本的一部分,仅此而已。谢谢
new SvnRevisionRange(newRevision, oldRevision);