2010-06-12 152 views
5

是否可以在現有的mercurial存儲庫中創建一個mercurial存儲庫?回購中的Mercurial回購

這個想法是將存儲庫的子目錄作爲不同的存儲庫處理,你怎麼做?

我不是在談論subrepos(至少,如果我理解subrepos的目的......),但如果這是subrepos的存在方式,我錯了,我會盡力讓它正確:)

感謝 〜亞希

編輯:爲了更清楚,我想知道發生了什麼,做法和內部具有另外一個信息庫的影響,不指定模塊/ subrepos。 換句話說:

hg init globalRepo 
hg init globalRepo/subRepo 

和使用這兩個版本庫,分別是:如果我只是做會發生什麼?

+2

顯而易見的問題是,你爲什麼要這麼做? – 2010-06-12 14:24:41

+0

我不想這樣做:)我只是想知道發生了什麼,以及在這種情況下mercurial會如何表現。正如我所想象的那樣,這樣的使用會有點棘手,我反正會使用subrepos。 – AkiRoss 2010-06-13 13:27:13

回答

15

它運作良好。很久以前,在Mercurial 1.3中添加了subrepo支持之前,很多人把他們的整個主目錄保存在一個mercurial repo中,用於跟蹤他們的文件等等。然後在他們的家裏,他們會有許多其他回購的克隆。

無論何時調用mercurial(沒有-R選項),它都會在當前目錄中查找.hg目錄,然後繼續向上查找目錄,直到找到目錄爲止。因此,如果您處於回購協議中的回購協議,您的命令將始終作用於您所處的最內層回購協議。

需要注意的是,您要確保不會將文件添加到外部回購最終在內部回購。然後你將有兩個更新相同文件的倉庫。

+0

比我的答案要詳細得多。 +1 – VonC 2010-06-13 13:39:36

0

以下是關於嵌套存儲庫的some docs

+1

已經閱讀,我說我不是在談論subrepos。但是,嘿,我的錯:我必須更清楚;我會在問題中添加一些細節。無論如何,謝謝:) – AkiRoss 2010-06-12 13:51:59

+0

通常子庫是你如何做子庫。除此之外,您可能想要告訴頂級回購商忽略globalRepo/subRepo的內容,以便分開歷史,這可能會破壞其目的,除非您只是懶惰地進行獨立回購。 – TerryP 2010-06-12 17:16:45

4

正如你可以在這個SO question看到,你可以做出那種嵌套hg init,即使它通常保留給定義subRepo(這也不是我們所追求的)。

通常情況下它應該工作作爲兩個獨立的回購協議,但我會建議以完全忽略subRepo內容將在globalRepohgignore規則。

+0

感謝您的回答,並對此遲到的評論感到抱歉。 因此,如果我得到了正確的結果,subrepos幾乎就像嵌套回購,不同的是,他們有一個.hgsub跟蹤在父回購,對吧?我想這是一個跡象表明父母回購行爲有點像.hgignore ou建議我。 – AkiRoss 2010-06-23 14:23:58

+1

@AkiRoss:「不同之處在於他們在父回購庫中跟蹤了一個'.hgsub」:是的,父回購實際上只引用了'。hgsub',這是subrepo的確切參考(提交)。但是在嵌套回購的情況下,沒有「父」回購。第一個回購完全忽略了它本身內部具有嵌套回購的事實。 – VonC 2010-06-23 15:40:24

+0

@Chris *但我會建議在globalRepo中添加hgignore規則,以便完全忽略subRepo內容。* 這絕對沒有影響。由於任何有.hg文件夾的子目錄都會被外部回購庫忽略。而且不能改變這種行爲。這就是爲什麼我放棄了mercurial,git一直在追蹤,除非我忽略了內在的一個 - 或者聲明它是一個subrepo(這是合理的,你似乎暗示它也是給予hg) – 2016-11-06 01:15:16