2011-02-01 114 views
2

我曾经使用git来移植不同分支之间的功能,rebase,rebase --onto,cherry-pick是我用过的典型工具。但现在我必须与svn合作。我不喜欢使用merge命令中内置的svn,因为它将所有提交合并为一个“合并提交”,尽管在1.5之后有一些历史追踪能力。 ,说,如果我在branchA有一个范围的提交,从R100到R110现在我想将这个功能branchBbranchC用相同提交评论重放一个这些提交一个(解决之间的任何冲突)。有没有可以为我做这个的自动工具?如何在svn中移植补丁

回答

2

我不知道任何自动化的工具来做到这一点的,但你可以实现沿git rebase同样的思路之一。它所做的只是创建一个临时目录并使用git format-patch来提取想要变更的更改,然后使用git am将它们应用回目标根目录。如果你在你的系统上输入locate git-rebase,你可以阅读它 - 这是一个shell脚本。这可能是/usr/local/libexec/git-core/git-rebase

svn相当于将使用svn diffsvn log保存原始提交信息之后patchsvn commit

0

如果可以,请使用git-svn。令人敬畏的git历史不会在中央回购中,但您将有更好的时间来管理您的工作。

+0

在git-svn中合并的缺点是svn`mergeinfo`不知道你的恶意软件,未来的合并不好(或者更糟 - svn merge在我的经验中做了一些真正愚蠢的事情)。 – 2011-02-01 22:12:25