我们有一个稳定的主干和不稳定的开发分支的SVN设置。开发工作(大部分)在分支上完成,然后在部署之前合并到主干。如何愚弄git-svn以识别与svn合并?
我使用git-svn作为我的SVN客户端。从不稳定到中继的合并过程如下:
git svn fetch
git co -b trunk svn/trunk
git merge --no-ff svn/unstable
git svn dcommit
svn/*
是远程SVN分支机构。
当然,这需要一个没有任何承诺到主干我之前做,但这不是在实践中的问题。
这个过程的好处是,git现在在我的本地存储库中记录合并提交的父母。这对我的同事没有好处,但它确实允许git在合并时计算共同的祖先。这是非常可取的。
这里是擦。当其他人进行合并时,git不知道它。这里有一个例子:
o-...-A---o---C--- unstable
/
X--...--B---o---o--- stable
不稳定分支在X点产生在A点,我们决定合并点B.从不稳定分支变成稳定分支的共同祖先是正确X.
由于合并未记录在git历史记录中,因此C处的以下合并再次假定X是共同祖先。我想它是A,如下面的图:
o-...-A---o---C--- unstable
/ \
X---...---B---o---o--- stable
这是完全没有必要让看起来像exacly与图片中显示的图表。任何能够将A识别为共同祖先的图形对我来说都很好。
我心中有一个选项,如正确使用git的过滤分支的或“假”犯下这是从来没有dcommited到SVN。然而,迄今为止,我的尝试都没有充分发挥作用。
我很感激你能提出的任何想法。程序不一定是自动的。合并是非常罕见的,我可以忍受“手工”的痛苦。
权!所以关键是做_two_中间提交,其中一个最终也在SVN中结束。这似乎至少在纸上起作用。感谢您的信息!我想知道是否有可能把这个变成git别名... – 2009-06-02 09:38:34
你忘了在“merge”分支中结束你的“**”(粗体)......“Git **” – 2009-07-19 11:35:46