2010-01-23 49 views
2

我有一個獨立的項目,CPAN模塊ExtUtils::MakeMaker。它也生活inside Perl。一般來說,MakeMaker的發佈將被製作,並且Perl將把該tarball集成到它的存儲庫中。但有時Perl會更改它的MakeMaker副本,並且該更改將不得不進入CPAN存儲庫。此外,Perl中MakeMaker的歷史在MakeMaker之前在github中進行了擴展。將一個獨立的項目合併成一個更大的項目而不會丟失歷史

而不是有兩個存儲庫,我希望有一個存儲庫。換句話說,直接提交給perl5.git/cpan/ExtUtils-MakeMaker。這解決了發行集成問題。問題變成了保存歷史,代碼考古對MakeMaker來說非常重要。 github存儲庫擁有MakeMaker的大部分歷史。 perl5.git有它自己的MakeMaker歷史,也是獨特而有趣的。這兩個歷史重疊。

問題是:我如何將github MakeMaker存儲庫合併到Perl存儲庫中,同時仍保留歷史記錄以供考古學使用?優選地,不涉及通過個人更改(有成千上萬)手動s solution的解決方案。

謝謝。

回答

-2

檢查你的資料庫可以讓你標籤分支你的代碼,並檢查了他們的究竟是什麼,他們會解決你的問題肯定;-)

問候。

+0

Git肯定允許標籤和分支,但我不確定這是如何與實際問題相關的。 – 2010-01-23 23:41:15

+0

嗯我認爲我得到的整個問題是錯誤的:( – 2010-01-24 10:59:34

2

您可以使用子模塊,或者您可以使用合併(也許與第三方git subtree工具的幫助)。

+0

子模塊如何保存兩個歷史? – Schwern 2010-01-25 21:06:15

+0

@Schwern:我不明白這個問題。在子模塊的情況下,你有*鬆散耦合,子模塊的歷史是在它的(克隆)存儲庫中,並且耦合的歷史記錄是超模塊。在子樹合併的情況下,你有*緊密*耦合到*加入的歷史記錄*。 – 2010-01-26 00:18:00

+0

子樹合併確實解決了問題。請參見http:// www。 kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html – 2010-04-12 07:05:05

0

注:因爲git1.7.11(2012年6月),有一個與git subtree script第三個選項(以前由apenwarrdeveloped on GitHub,現併入主線GIT)

這樣的話,你可以合併一個回購協議(及其歷史),保留選擇以後提取其歷史(而不是子樹合併)。

相關問題