2011-03-27 75 views
1

如果我有一個文件夾,例如:如果我有一個包含許多代碼片段文件夾的文件夾,如何避免Git或Mercurial提交其他文件夾中的源代碼?

code/try_closure 
code/try_http_send 
    [...] 

我可以創建在code文件夾的存儲庫,但當時如果我犯的try_http_send文件夾:

hg commit -m "good version"  <--- git should be similar 

的話,我可以不小心犯其他代碼更改全部其他文件夾code下。

或者,我可以爲每個子文件夾創建存儲庫,但這很愚蠢,如果我需要將整個code推到另一個位置,那麼我需要一個一個地推子文件夾?有沒有辦法解決這個問題?這裏的關鍵字是「意外」提交其他子文件夾中的所有文件。我知道我可以使用hg commit . -m "good version",但是使用hg commit -m "..."代替它很容易。

回答

3

使它們分開存儲庫,然後使它們成爲頂級代碼模塊的subrepositories。然後在代碼中,您可以執行hg push --subrepos將它們全部推送,然後可以將其作爲樹來克隆。

+0

順便說一句,當我輸入'hg push --subrepos'它說 'hg push:option --subrepos not recognized'可能只需要說push和它會推送所有的子倉庫,噹噹前目錄是子倉庫時提交或推送,那麼它只會提交或推送該子倉庫 – 2011-03-28 15:54:45

+0

您可能需要更新版本的Mercurial。我認爲這個選項在1.7之前不會出現。 – 2011-03-29 02:44:44

1

一個存儲庫應該包含你想一起提交的東西。如果您從不想將單獨文件夾中的代碼提交到一起,則每個文件夾都應該是獨立的存儲庫。

+0

「一個存儲庫應該包含你想一起提交的東西」......對於git和hg來說,這是真的嗎?誰說的?雖然這可能通常是正確的,但我認爲它可能就像是說「一個程序應該接受用戶的輸入,處理它並輸出結果」,而大多數情況下都是這樣,一個給出隨機引用的程序又如何呢?情況下,沒有真正的用戶輸入,僅僅處理和輸出,以及街機遊戲中心中的視頻遊戲,甚至在任何用戶輸入之前都輸出(吸引人們投入資金) – 2011-03-27 04:13:58

+0

也如果它們真的應該屬於所有不同的存儲庫,那麼是否有一種方法可以在一個命令中全部推送'code'文件夾?如果需要推送每一個文件夾,甚至寫一個腳本來完成它,那將是愚蠢的。 – 2011-03-27 04:26:23

+0

Git和Hg都跟蹤存儲庫級別的變更集,而不是文件/目錄級別。這是真的,由於它們的工作原理... – Amber 2011-03-27 06:34:16

0

說真的,你應該花這段時間。除此之外,檢查你的下一次提交將會做什麼總是一個好主意,例如,通過使用hg sthg diff。這種檢查作爲對提交工作的最後快速檢查,並可能提醒您僅提交一些文件(例如.)。除非你想快照目前的工作,你不應該盲目提交。

也就是說,如果你真的想不使用文件自變量來提交你既可以

  • 使用subrepos的建議在其他的答案,或
  • 定義與.提交alias爲默認參數
+0

有時候這樣做太簡單了:做一個微小的改變,甚至只是一個評論改變,你認爲這只是一個微小的改變,沒關係,並且繼續使用'hg com -m「改變評論」'和承諾一切 – 2011-03-28 05:23:03

相關問題