SVN Revert Trunk,删除修订版,好像它从未存在过一样?

Man*_*imo 14 svn revision revert svn-trunk

是否有可能在svn服务器中删除修订版,好像它从未存在过?

所以我们有以下修订:

1004 // Commit of some bogus code that broke the build and was just wrong
1003 // Change 1.2
1002 // Change 1.1
1001
1000 *** Initial checkin
Run Code Online (Sandbox Code Playgroud)

我们可以删除svn中的1004并恢复到1003,好像1004从未存在过吗?

原谅我的无知,我还在学习如何使用SVN.

JB *_*zet 27

这些事故很明显,如果SVN将它们保留在历史中,这不是问题.重要的是修复事故.执行此操作的方法是还原此提交所做的更改.使用以下命令:

svn merge -r [current_version]:[previous_version] [repository_url]
svn commit -m “Reverting previous commit and going back to revision [previous_version].”
Run Code Online (Sandbox Code Playgroud)

如果您正在使用TortoiseSVN,则只需显示日志,选择提交,然后在上下文菜单中选择"从此修订版还原更改".它会将您的工作副本更改为以前的版本,您只需提交即可.

我猜其他图形客户端也有相同的选择.

  • 嗨,JB,感谢你的建议,这就是我想做的事情,但是我给马丁正确答案,因为它回答了我原来的问题.我尝试过这个但是我打破的构建是一个复合合并的一些东西,它似乎没有用.最后我不得不求助于更多的手动措施.我认为对于一个不太复杂的逆转,这将是一个理想的解决方案(问题的例子是我的问题过度简化).谢谢. (2认同)

ty8*_*812 15

VCS系统专门设计用于使其尽可能复杂.你通常不想这样做.

话虽如此,从官方文件:

在某些特殊情况下,您可能希望销毁文件或提交的所有证据.(也许有人意外地提交了一份机密文件.)这并不容易,因为Subversion是故意设计的,永远不会丢失信息.修订是不可变的树,彼此建立在一起.从历史记录中删除修订版会导致多米诺骨牌效应,在所有后续修订版中产生混乱,并可能使所有工作副本无效.

然而,该项目有计划实施一项svnadmin obliterate命令,该命令将完成永久删除信息的任务.(见问题516.)

与此同时,您唯一的办法是使用svnadmin dump您的存储库,然后将dumpfile通过svndumpfilter(不包括坏路径)传递给svnadmin load命令.有关详细信息,请参阅Subversion书的第5章.

http://subversion.apache.org/faq.html#removal