2011-08-24 68 views
4

documentation他們使用這些內容的映射文件:使用hg convert合併2 repos而不是hg pull -f有沒有優勢?

$ echo include subfoo > /tmp/myfilemap 
$ echo rename subfoo . >> /tmp/myfilemap 
$ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo 

什麼是合併2個回購等優點。有沒有這樣做的正當理由:

hg pull -f other_repo 
hg merge 

他們通過重新命名subfoo來完成。 ?

+0

2 repos是相關的(1是另一個的克隆還是從同一個repo克隆)或完全不相關? –

+0

回購是完全無關的。 – Geo

回答

4

他們的示例(您在問題中發佈的subfoo文件映射)用於將現有回購的子目錄轉換爲其自己的存儲庫,並具有該子目錄下所有文件的歷史記錄。將subfoo重命名爲.意味着源回購中目錄subfoo的所有文件和目錄現在都將位於新回購的根目錄下。

你可以使用一個filemap與rename反其道而行之並作出回購A的根目錄的內容現在子目錄的內容,然後使用pull回購乙結合起來:

> echo rename . subfoo > /tmp/myfilemap 

> hg convert --filemap /tmp/myfilemap /path/to/repoA /path/to/repoA_converted 

> hg -R /path/to/repoB pull -f /path/to/repoA_converted 

> hg merge 

然而,subrepos可能是更好的選擇。

+0

但是,轉換允許你指定在哪個文件夾下拉?如果我做了pull + merge,如果我想讓它們位於不同的目錄中,我必須自己移動這些文件。 – Geo

+0

啊,這必須是重命名的東西。對? – Geo

+0

沒錯。重命名允許您在不添加變更集的情況下更改repo en-masse中的文件路徑。在我的例子中,一個'/ path/to/repoA/myfile.txt'文件最終會成爲'/ path/to/repoA_converted/subfoo/myfile.txt'。 –