2013-06-18 32 views
0

我有很多「合適」的項目。他們共享源文件。如何在保留目錄結構的同時合併存儲庫?

enter image description here

每個項目(包括數測試)有它自己的Mercurial庫。

我想將所有這些存儲庫加入主存儲庫,並且保留相同的目錄結構

mkdir MasterProject 
cd MasterProject 
mkdir "Common_sources" 
hg init 
hg pull ../Common_sources Common_sources 

最後一句顯然是行不通的這種方式,但它是正是,我想的行爲。即複製所有文件及其歷史記錄,並將它們放入Common_sources目錄中。

如何在Mercurial中實現此目的?

回答

2

您將需要使用convert extension來執行此操作。

您需要做的是使用filemap轉換源存儲庫,將存儲庫中的所有文件移動到一個子文件夾中。要爲Common_sources文件夾中做到這一點,你可以使用這個命令:

hg convert --filemap filemap.txt Common_sources Common_sources.tmp 

filemap.txt文件將包含這行文字:

rename . Common_sources 

轉換後,你有存儲庫稱爲Common_sources.tmpCommon_sources具有相同的歷史記錄,除了所有文件都在子目錄中。

如下您將所有要合併,然後將它們合併成一個項目庫執行類似的任務:

mkdir MasterProject 
hg init 
hg pull ../Common_sources.tmp 
hg pull ../Integration_tests -f 
hg merge 
hg commit -m "Merging integration tests" 

重複拉,合併,並承諾爲您希望每個項目添加到存儲庫項目中。

完成所有工作後,您可以使用hg update完成主存儲庫中的所有新文件夾。

相關問題