尝试反向合并以恢复1个特定文件。我相信我理解它应该如何运作,但却会出现奇怪的错误。
我重读了svn书,Google和堆栈等等。
问题:
我想指定要恢复的1个特定文件。
SVN不喜欢本地文件引用,因为该文件不存在,但在线示例似乎使用本地文件名。
它也不喜欢完整的http路径,因为它在存储库中不存在。我知道它现在不存在,但它就在那里。即使使用@peg语法仍然会出错。
示例:
尝试失败:
svn merge -c -100 .myFile
Error: .myFile not under version control
svn merge -c -100 http://server/repo/Project/trunk/.myFile
Error: svn: '/repo/!svn/bc/120/Project/.myFile' path not found
Note that rev 120 is between the delete (r100) and now (r150)
svn merge -c -100 http://server/repo/Project/trunk/.myFile@99
Error: svn: File not found: revision 100, path '/Project/trunk/.myFile'
svn merge -c -100 . .myFile
Don't recall specific error.
svn merge -c -100 . http://server/repo/Project/trunk/.myFile@99
Error: svn: Cannot specify a revision range with two URLs
......以及各种其他组合......
我真的很难过。我相信我理解反向合并,以及为什么有时需要@pegs,但这个特殊的组合非常令人烦恼。
我有解决方法:我可以恢复所有文件然后清理。或者只是复制并粘贴旧版本,我可以使用svn cat命令。
但我想了解“正确”的方式。
答案 0 :(得分:1)
今天处理一个稍微不同的问题,我相信我终于找到了答案。
我正在合并来自单个文件的更改,而不是恢复已删除的副本,所以不完全相同。
我做了一个关键的改变:
其他要点:
假设示例修订概述:
撤消删除,我认为会是:
cd localWorkDir/Project/trunk
svn update
svn merge -r100:85 http://server/repo/Project/trunk/.myFile ./.myFile
svn commit -m "restoring files"
(message saying committed r151)
所以我认为合并单个文件时的-c语法是有问题的。