将独立项目合并为更大的项目而不会丢失历史记录

时间:2010-01-23 20:53:04

标签: git merge

我有一个独立的项目,即CPAN模块ExtUtils::MakeMaker。它也存在inside Perl。通常,将发布MakeMaker版本,Perl会将该tarball集成到其存储库中。但有时Perl会更改其MakeMaker的副本,并且该更改必须进入CPAN存储库。此外,Perl中MakeMaker的历史在Github中的MakeMaker之前延伸。

我希望有一个存储库,而不是拥有两个存储库。即,直接提交到perl5.git / cpan / ExtUtils-MakeMaker。这解决了发布集成问题。问题变成了保存历史,代码考古学对MakeMaker非常重要。 github存储库具有MakeMaker的大部分历史记录。 perl5.git有自己的MakeMaker历史,也是独一无二且有趣的。这两个历史重叠。

问题在于:如何将github MakeMaker存储库合并到Perl存储库中,同时仍保留历史记录以供考古使用?优选地,解决方案不涉及手动挤压个别变化(有数千个)。

谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用子模块,也可以使用子树合并(可能借助第三方git subtree工具)。

答案 1 :(得分:0)

注意:自git1.7.11(2012年6月)以来,git subtree script有一个第三个选项(developed on GitHub之前的apenwarr,现已合并到主线git中)

这样,您可以将一个repo(及其历史记录)合并到另一个仓库中,保留以后提取其历史记录的选项(与子树合并相反)。

答案 2 :(得分:-2)

检查您的存储库是否允许您标记分支您的代码,并检查它们究竟是什么,它们肯定会解决您的问题; - )

问候。

相关问题