2010-03-09 132 views
8

將現有存儲庫作爲subrepo添加到其他現有存儲庫的最佳/最簡單的方法是什麼(或甚至可能)?如何將subrepo添加到mercurial的現有存儲庫中

情況是我有一個現有的(主要)項目,我想包括一個庫項目,以便我可以編輯主項目中的庫項目,並在對主項目進行壓縮時將更改提交到庫項目。

另請參見:我是否需要克隆/推/拉到原始庫項目,還是在主項目中提交時自動完成?

問候
加斯帕豪格

+0

很好的問題 - subrepo文檔是不是最好的,目前 – 2010-03-09 13:05:20

+0

同意 - 我希望有人有一些動手與這一個體驗,因爲我想我的情況非常普遍。 – Hauge 2010-03-09 13:40:17

回答

5

這個子文檔讓我困惑不已,所以我寫了一個shell腳本來將它的一部分抽象出來。

addsubrepo.sh

這樣稱呼它

$ cd $TOP_OF_HG_PROJECT 
$ addsubrepo.sh $URL_TO_HG_PROJECT relative_path/you/want_to/put_the_subrepo 
+0

唉,我在一個窗口框,所以沒有shell腳本,但你的腳本可能會移植到一個PowerShell腳本,只是似乎有點超過頂部,這樣的基本功能:-o – Hauge 2010-03-09 13:46:18

+1

總有Cygwin,它是大,但它工作正常。 – reinierpost 2010-03-09 13:52:20

+0

它確實感覺到頂部,但感覺就像每次我嘗試在hg中做一個subrepo時,我都會把它擰緊。現在我不:) 至少這個告訴你它是如何完成的 – RyanWilcox 2010-03-09 14:25:55

0

您可能需要使用deps擴展。

+0

是不是隻用於不是mercurial回購的外部回購協議的代碼擴展? Deps是否允許我對「包含」回購進行更改? – Hauge 2010-03-09 13:41:28

+0

根據文檔,它支持'任何'類型的存儲庫,包括Mercurial – Mikezx6r 2010-03-09 14:13:53

+0

如果您有一個Mercurial子存儲庫,只需輸入它並從那裏推送。它將能夠區分「容器」(內部或外部)。 – 2010-03-09 15:49:10

2

閱讀文檔時,subrepo插件支持此功能。

我還沒有使用它,但可能會在不久的將來開始使用它。

它改進了Mercurial的每一個版本,我相信人們正在成功地使用它。它似乎得到了合理的關注,並被列入最後一次編碼閃電戰的議程。

根據help,pull,push,commit等也應該在subrepo上運行。這聽起來像一個提交將檢查是否有任何變化的subrepo。如果有,它們將被提交,並且subrepo中的新變更集將記錄在.hgsubstate文件中。這個文件,以及主要的回購變化將被提交。

當你克隆時,Mercurial應該看到.hgsubstate和.hgsub文件,並且正確地拉取子目錄,並更新到正確的修訂版。

0

我是這樣做的:

$ cd /projects/main_project 
$ hg clone /projects/plugins/awesome plugins/awesome_plugin 
$ echo plugins/awesome_plugin = plugins/awesome_plugin > .hgsub 
$ hg add .hgsub 
$ hg commit -m "added awesome_plugin plugin as a subp-repo" 
相關問題