哪个版本控制?

时间:2010-10-30 09:54:14

标签: version-control version

如果一个项目有多个人,比如A,B,C一起工作,他们都编辑同一个源文件。

几个月之后,他们意识到A所做的事情是错误的,并且他们希望以这样的方式回滚文件,即只删除A“触摸”的部件/功能/线/ ...并且工作B和C确实仍然处于回滚版本。换句话说,回滚版本只有B和C的工作,直到他们决定删除A的工作。

是否有任何版本/源代码控制软件(免费/商业版)可以做到这一点?

感谢。

5 个答案:

答案 0 :(得分:1)

Git和一些脚本将会这样做。可能还有一点手工作,但你可以使用交互式rebase来提交提交。

答案 1 :(得分:1)

大多数VCS应该能够做到这一点 - 它是一个反向合并。在Subversion中,您将识别A所做的修订并再次将它们合并,但反之亦然。为了过度简化,这意味着将线路添加转换为线路删除,反之亦然。

# Don't want revision 37 because A made it.
$ svn merge -r 37:36 path

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo

答案 2 :(得分:0)

我使用TFS和Git。但是,有很多免费和开源版本控制软件。您可以找到所有源代码管理软件here

答案 3 :(得分:0)

在Git中,你可能会做类似

的事情
git revert `git rev-list --author=A`

[注意:完全未经测试。]

答案 4 :(得分:0)

我敢打赌,通过使用`mtn local kill_certs selector certname [certval]'命令(参见Monotone)可以(轻松)使用reference来完成:

  

此命令删除与给定选择器匹配的修订版上具有给定名称的证书。如果给出了值,则它将自身限制为仅删除具有相同值的证书。像kill_revision一样,这是一个非常危险的命令;它永久且不可撤销地从您的数据库中删除历史信息。

因此,通过使用A的证书,上述命令将消除他所做的“错误工作”。