2011-05-27 151 views
9

我有一個hg倉庫,有一個hg subrepository,裏面有一些git子模塊。 (我知道這聽起來完全是瘋了,但它是在谷歌代碼中的svn repos,github中的libs和bitbucket中的模塊中工作的。我使用的代碼由一羣人自由提供,我是誰我抱怨他們的決定版本控制 - 我想要的是代碼,我很感激)。爲什麼總是提交一個git子模塊,即使它沒有改變?

有點「樹」這個場景:

+ hg repo 
    + hg subrepo 
    + git submodules 

當我改變了汞subrepository一個文件並提交,它要求所有的git的子模塊,即使他們沒有改變。我已經運行hg status,它不會顯示有關git的子模塊任何東西,但如果我承諾:

committing subrepository SUBREPO 

這不會是如此困難,如果我只用一個汞主要回購帶着一幫混蛋子模塊。當我在第一個hg倉庫中進行更改時,問題依然存在:現在,當我提交時,它在hg倉庫中提交,並在hg子倉庫中提交,因爲它總是提供gdp子模塊。所以現在,我有一個評論,它只是設計在第一個hg倉庫中,並且在hg subrepository中有相同的評論。

如何避免這個intermitent committing subrepository SUBREPO,我對我的hg repository/subrepository使用git submodules做的每一個提交?這是一個錯誤?這是一個混帳設計(也許git倉庫總是至少改變一個「狀態」文件或類似的東西總是改變後拉?我沒有太多的經驗與混帳......)

+6

+1對於我從來不想體驗的非常荒謬的場景 – Andy 2011-05-27 03:04:52

+0

您是否試過'hg ci -X「hg-suprepo-dir」'? – jmg 2011-05-27 08:15:51

+0

@jmg:我沒有嘗試,因爲我想了解原因,而不是「排除」這些子模塊。 :) – 2011-05-27 21:38:33

回答

2

即使拉沒有得到任何東西會觸摸git中的文件...更具體地說是.git/FETCH_HEAD文件。我不記得Hg/Mercurial在這裏如何做,但我懷疑同樣的事情。在任何情況下,如果它是空的拉,那麼文件本身不會改變,只有時間戳。

你可以通過製作一份你的git/hg倉庫的確切副本來驗證這一點,然後只在一箇中進行提取。目錄比較工具將顯示更改的文件。

如果我正確記住我的hg,hg status命令將特別不包含子存儲庫中的文件,因此您看到的行爲是有意義的。

+0

「即使是一無所獲的拉將會觸及git中的文件......更具體地說.git/FETCH_HEAD文件」這正是我試圖研究的內容。也許有git子模塊的hg實現會改變這個文件。我要調試這個來看看我能否想出一個解決方案!謝謝! – 2011-06-01 14:34:54

0

不知道是否有幫助,但在Subrepository,第3.1節他們解釋應該如何佈置subrepo。

但我知道你在這個組織中沒有發言權?你可以重新組織你的層次結構嗎?

相關問題