2010-10-27 65 views
2

我已經得到了版本控制下的一些代碼(使用水銀),並想和大家分享一些吧,同時隱藏着我無法釋放進入公有領域的其他部分(至少在這個階段)。製作資源庫的一個子集公之於衆,同時保持歷史

我非常喜歡,讓市民代碼的修訂歷史記錄完整,而且,更重要的是,能夠推/拉的公共倉庫,以及包含公共和私人的代碼存儲庫之間的變化。但是,它不應該可以從公共存儲庫歷史中恢復任何私人信息。

從我目前爲止收集到的,它應該是可以提取使用hg convertfilemap和不包括公共的東西,雖然這將改變所有的版本編號和排除這兩個倉庫之間的任何互動。

爲了完整性,我想我應該補充說,該存儲庫最初是從CVS轉換而來的。

將是任何想法感謝,

+0

剛剛意識到這比我想象的要複雜得多 - 因爲我有一些在同一文件中設置了「私人」和「公共」源代碼的例子。懷疑最安全的選擇可能是放棄保存公共存儲庫的歷史記錄,並且只用重構的資源創建一個新的存儲庫。儘管如此,仍然希望能夠在兩個存儲庫之間推/拉任何新的更改。 – user488551 2010-10-28 07:53:18

回答

3

它並不總是可行的,但如果你的回購的公共部分可以被限制(或移動到)到您當前回購的子目錄,然後你可以:

  • 提取物(含比如,像你提到的,hg convert)在自己的
  • 基準的回購該子目錄新回購作爲subrepo你的主回購。

然後,您可以管理兩個回購:

  • 一個公共(只有在它的公共文件)
  • 一個私有的(與參考公衆回購作爲subrepo)
+0

+1單獨的回購 – sylvanaar 2010-10-27 12:02:54

+0

謝謝,不幸的是,它看起來不會那麼容易。大部分的代碼應該公開,但是私人位現在分散在各處。這是因爲我按功能安排了代碼,而不是考慮可能最終會被公開/私下化的問題。將嘗試並考慮重新排列公共和私人位的方式,但這可能會很棘手。 – user488551 2010-10-27 19:32:34

+0

@ user488551:是私有的「比特」碼嗎?或配置敏感或特定數據的文件? – VonC 2010-10-27 20:00:43

0

如果你可以使用subrepos,這可能是最好的方法,但使用convert不必排除部分之間的相互作用。如果公共和私人的東西是完全不相交的,請使用convert將原始回購拆分爲兩個完全不相交的子集(重新生成所有變更集ID),然後通過克隆一個和拉動另一個(使用--force來克服重新創建「超集」回購hg反對不相關的存儲庫)。你最終會得到一個非傳統的回購協議,它有兩個無父母變更集和兩個頭。合併團長,再次對公共和私人進行統一的觀點,公共回購的血統有效地在其自己的一個分支上。

+0

完全不相交的意思是什麼?我目前的計劃是從公共存儲庫中清除歷史記錄(即使用公共子集的源創建一個新的存儲庫)。如果我可以從這裏拉(從 - )到私人存儲庫,這將有相同的所有公共文件的副本,以及他們的歷史,我可能會在商業中。這樣我只能保留私人回購中的(預先拆分)歷史記錄,但這應該足以讓我們能夠回過頭去找到哪裏有錯誤。 – user488551 2010-10-28 08:01:57

+0

對不起,「不相交」的含義很模糊。我的意思是,如果你的公共代碼都是與所有私有代碼不同的文件。如果是這樣的話,那麼你可以使用'filemap'來將兩個片斷完全分開,而不再將它們的祖先混合在一起(即每個變更集只涉及公共和私人之一,而不是兩者)。私人回購沒有自己的公共文件副本(在不同的變更集意義上);你可以先把私人資料轉換成它自己的回購資料,然後把公共資料回收併合並。將添加一個例子給我的答案。 – shambulator 2010-10-28 08:23:58

+0

啊,剛纔看到你的評論是關於在相同的文件中混入公有和私有代碼。我認爲@VonC是對的;故意重構比嘗試拆分回購更好,然後不得不重構破壞事物。 – shambulator 2010-10-29 11:24:02