Subversion是否更适合挑选git(或任何DAG VCS)?

时间:2013-12-19 13:02:22

标签: git svn mercurial dvcs directed-acyclic-graphs

我刚刚阅读http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html,似乎svn:mergeinfo可以跟踪有关单个提交合并的信息,这些信息发生在挑选樱桃时。

当您将功能分支与挑选出来的错误修复程序合并到原始分支(之前您已经修复了错误)时,可以避免合并冲突。

这里有趣的ASCII艺术(人们喜欢SO):

      o--o--o--o--o    feature
     ^      ^      \
    /      /        v
-o--o--o--X--o---o---Y--o-->  dev

此处X - 仅限单个变更集(我们从dev移至feature分支的基本/阻止程序修复程序。)

我尝试在Git合并中发现Y存在冲突,如果您已经修改了受修复X影响的行。虽然SVN只是从合并中跳过该变更集。

更新这导致DAG VCS用户使用bisect和来自bisect和分支的共同祖先进行修复传播。所以你可以创造干净的历史。

1 个答案:

答案 0 :(得分:2)

您可能需要read up on rerere,这是“重复记录的分辨率”的缩写。 Git可以记住你过去如何解决冲突并在以后重用这些决议,但你必须启用该功能。

git config rerere.enabled true将在您的存储库中启用此功能(如果您希望在此计算机上默认为此用户启用此功能,请使用--global。)