A 非常聪明开发人员几乎删除了整个存储库并提交了它(rev 210)。我的电脑上有一份工作副本,但版本库相当庞大。SVN在服务器端恢复
我想创建一个新版本(211),它与上一次良好的修订(209)相同。我不想保留修订版210中的任何内容,这是错误的提交。这是开发商的错,他们将不得不重写任何事情,就我而言。
想法?
A 非常聪明开发人员几乎删除了整个存储库并提交了它(rev 210)。我的电脑上有一份工作副本,但版本库相当庞大。SVN在服务器端恢复
我想创建一个新版本(211),它与上一次良好的修订(209)相同。我不想保留修订版210中的任何内容,这是错误的提交。这是开发商的错,他们将不得不重写任何事情,就我而言。
想法?
如果该开发者没有删除服务器上的存储库,那么所有的代码都是安全的。您只需要创建一个新的空文件夹,然后从版本209执行SVN签出,而不是HEAD。这将为您提供处于其修订版209状态的每个文件。您可以在任何开发工作站上执行此操作,无需在服务器上执行任何操作。
要恢复更改,只需在您的工作副本根上拉SVN显示日志(如果使用TSVN)窗口并选择修订版209,然后选择还原为修订版 - 这将对修订版中的更改进行反向合并210,然后您可以将其作为版本211进行检入。这可以解决您的问题。
如果开发人员删除了SVN服务器上的存储库,则需要每日备份来恢复您的代码。
只要服务器上的存储库完好无损,就不可能从SVN中删除任何东西。当你删除某些东西时,它从这一点开始就变得不可见,但你总是可以回到版本库中任何版本的任何文件 - 你只需要去正确的版本。
谢谢。这解决了这个问题。非常感激。 我知道代码是安全的,我理解SVN的一部分。我只是想创建一个完全像209的新版本(211)。非常感谢! – 2012-01-29 06:37:07
@ScottCrooks我很高兴它有帮助。你介意在这种情况下接受我的答案吗? – xxbbcc 2014-06-06 16:37:46
在Linux机器上一个基本的方法是:
cp PRJ ../../bkup
svn up PRJ
cp ../../bkup PRJ
cd PRJ
svn add *
svn ci -m "everything again" PRJ
希望你明白了吧
这可以通过reverse-merging解决:
以下命令将返回你的工作副本修订状态209:
svn merge -c -210 .
然后com麻省理工学院:
svn ci -m "reverse merged revision 210"
有这对我的作品一个丑陋的方式......只要你想删除的最后一次提交,而不是一些在中间提交。
首先 - 关机SVN服务器和备份您的回购由svnadmin hotcopy repo repo_backup
转到SVN服务器,然后继续你的回购。看看./db/revs/X/,其中X是错误提交的第一个数字。你可以在那里看到错误的提交文件(例如123)。删除此文件,然后修改./db/current以指向之前的提交(例如122)。
切换到git的时间 – 2012-01-29 03:57:45
触发该开发人员的时间 – 2012-01-29 04:11:26
删除文件(或整个存储库)然后提交不会导致任何内容丢失。这是版本控制系统的重点,如果你犯了错误,它可以防止永久性丢失。 – 2012-01-29 04:22:22