什么是正确的方式恢复一个被删除的文件,从SVN?
-
20-08-2019 - |
题
我已删除的文件从一个仓库,现在要把它放回去。好的,我可以弄清的是:
- 更新修订之前删除
- 复制文件的其他地方
- 更新头
- 复制的文件回来
- 加入他们
- 提交
这只是闻起来糟糕,它失去所有的历史引导。那里已经有了一个更好的方式来做到这一点。我已经看了 SVN书 但没有发现任何东西,我现在向下看SVN标记清单。
解决方案
使用svn合并:
svn merge -c -[rev num that deleted the file] http://<path to repository>
这样一个例子:
svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk
^ The negative is important
对于如今(我认为...)
- 右击中资源管理器,走到如今->合并...
- 确定"合并的范围的修订"被选定,下一击
- 在"修订版的范围,以合并"的文本,指定的修订,删除的文件
- 检查"反向合并"checkbox击下
- 点击的合并
这是完全未经测试,但是。
编辑运算:这个作品我的版本如今(旧的种类没有一个按钮)
- 去到文件夹的东西是从delated
- 右击中资源管理器,走到如今->合并...
- 在 从 部分进入修订,并删除
- 在 要 部分进入修订之前删除。
- 点击"合并"
- 提交
诀窍就是要合并 倒退.荣誉 肖恩。明亮的 指着我在正确的方向!
编辑: 我们使用的不同的版本。该方法,我所描述的工作完全与我的版本如今.
还值得注意的是,如果有多个变化的承诺,你是反向合并,你会想恢复这些其他变化一旦合并完成之前提交。如果你不这样做,这些额外的变更也会被逆转。
其他提示
该问题做一个svn合并建议的那样,肖恩亮的是,为重新引入其它改变了相同的修改以删除。Svn复制是一个更有针对性的操作,只会影响被删除的文件。
使用乌龟SVN你能恢复文件已经被删除从你的工作副本目录和从后SVN修订,通过svn复制如下:
- 浏览工作复制文件夹的以前包含的文件。
- 右击的文件夹,浏览器,走到如今->显示记录。
- 右击的修订编号之前的修订,删除的文件和选择"浏览库".
- 右击中删除的文件,并选择"复制作副本..."和保存。
删除的文件现在将工作复制文件夹。重新添加回SVN,右击中恢复文件和选择SVN提交。
NB:这种方法将保持以前的历史的恢复文件,但是看看现有的历史,在如今的日志你需要确保"停止在复/重新命名"被选中的登录信息的对话。
使用乌龟SVN复制的功能恢复致力于改变:
- 右键的父的文件夹删除的文件夹
- 选择"显示日志"
- 选择和正确的点击之前的版本的改动/被删除的做
- 选择"浏览库"
- 选择的文件,这需要恢复和正确的点击
- 选择"副本",这将复制文件的头修订
希望帮助
我似乎总是使用svn副本作为一个服务器的操作,所以不肯定的如果它的工作与两个工作路径。
这里是一个例子恢复的已删除的文件进入一个当地工作复制的项目:
svn copy https://repos/project/modules/module.js@3502 modules/module.js
同时在内部项目目录。这个工作以及恢复整个目录。
如果您使用的是乌龟SVN,你应该可以恢复的变化,仅从该修订进你的工作副本(有效地执行反向合并),那么另一个承诺重新添加的文件。要遵循的步骤:
- 浏览到文件夹中的工作复制那里你删除的文件。
- 去仓库-浏览器。
- 浏览,以修订那里你删除的文件。
- 在列表的变化,发现文件被删除。
- 右击的文件并转到"恢复的变化,从这次修订".
- 这将恢复该文件对你的工作副本,保持历史记录。
- 提交的文件增加回你的仓库。
与 乌龟SVN:
如果你没犯你的变化还没有,你可以做一个恢复对父母的文件夹删除的文件或录。
如果你已经犯了被删除的文件,然后可以使用库浏览器,改变,以修订该文件仍然存在,然后使用该命令的副本。从上下文的菜单。进入路径你的工作副本作为目标并被删除的文件将复制从仓库到你的工作副本。
最简单的方法我已经能够恢复的文件并未丢失修订历史是使用 SVN复制, 合并如上所述,我似乎是一个更复杂的方法实现同样的事情。为什么有必要合并时你只是想要恢复一个修订?
我用以下在这个实例,它工作得很好。
svn copy -m 'restoring file' -r <rev_number_file_to_restore> http://from/file.cs http://pathTo/file.cs
我似乎总是使用 svn copy
作为一个服务器的操作,所以不肯定的如果它的工作与两个工作路径。
你应该能查出的一个文件你想要的恢复。尝试一些东西喜欢 svn co svn://your_repos/path/to/file/you/want/to/restore@rev
哪里 rev
是的最后一次修订,在该文件的存在。
我不得不这样做的正是这一个小时前,如果我没有记错的话,采用的 -r
选择 svn
没有工作;我不得不用的 :rev
语法。(虽然我可能会记得它后退...)