【发布时间】:2012-01-24 00:38:22
【问题描述】:
尝试反向合并以恢复 1 个特定文件。我相信我理解它应该如何工作,但会出现奇怪的错误。
我重读了svn book、google和stack等
问题:
我想指定 1 个要恢复的特定文件。
SVN不喜欢本地文件引用,因为该文件不存在,但网上的例子似乎使用本地文件名。
它也不喜欢完整的 http 路径,因为它不存在于存储库中。我知道它现在不存在,但它就在那里。即使使用@peg 语法仍然会报错。
例子:
- 在修订版 100 中,我删除了一堆文件,因此 r99 是它存在的最后一个时间点。
- 我们现在处于修订版本 150,我只想要一个文件。
- 假设文件名为 .myFile(带有前导点,不要认为这很重要)
- 项目 URL 和“工作目录”是http://server/repo/Project/trunk
- 文件的 URL 应该是 http://server/repo/Project/trunk/.myFile
- 假设我在等效的文件系统目录中,没有挂起的更新或提交,换句话说 svn status --show-updates 。 表明我是最新的。
- 我可以做 svn cat http://server/repo/Project/trunk/.myFile@99
尝试失败:
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 命令来完成。
但我想了解“正确”的方式。
【问题讨论】: