2015-10-20 96 views
0

我可能正在尋找這方面的錯誤工具,但我有一個系統配置如下:$ HOME/module/submodule/{bin,config,log,tmp},在多臺服務器上。我想將源代碼控制添加到所有的配置目錄中,而不是其他的(特別是日誌!)。我猜測我可以將git指向$ HOME並使用.gitignore來排除我不感興趣的所有內容,但是新模塊可能會不時添加,這意味着我想立即排除很多內容。有任何想法嗎?我錯過了明顯的東西嗎?順便說一句,我沒有結婚,我會接受任何滿足我需求的系統。一箇中央變更庫會很好,但不是必需的;我只想要一種方法來回滾錯誤,並添加一些更改跟蹤。如何僅將版本跟蹤器用於某些子目錄?

+0

Git沒有工作,汞看起來不太可能(但還沒有真正測試過)。我可能需要咬緊牙關,併爲所有子模塊目錄添加.git /和.gitignore。不如我想要的漂亮...... – samwyse

回答

2

.gitignore是一個非常強大的方法來做到這一點。

如果您希望將來也排除所有內容,並且沒有自動添加目錄或文件,但已經有幾個目錄,則可以使用*格式和!前綴。

它遵循.gitignore的例子就擺在你的根目錄下:

# exclude files in the root dir 
/* 
# exclude dirs in the root for 
/**/ 
# include back the dirs below mentioned 
!/bin/ 
!/config/ 
!/tmp/ 

注意。對不起,但我不在我的筆記本電腦上,我無法嘗試它,所以我正在寫這個例子。查看文檔的任何細節。

+0

不幸的是,「如果排除該文件的父目錄,則不可能重新包含文件。」所以/ ** /不包括配置,後面的行將不會返回。顯然,也不會對整個路徑進行硬編碼,例如我試過的!/ module1/subdir1/config/* 。 – samwyse

+0

對不起,如果我遲到了,我剛剛嘗試了答案中提出的解決方案,它完美地工作。你嘗試過嗎?可能是因爲你的* .gitignore *文件有問題嗎?事實是,您要包含的文件的父目錄不會被排除,因爲您通過以'!'開頭的行重新包含它們,所以您的評論沒有多大意義。 – skypjack

1

阿呆和明顯的方式

$HOME創建%REPO-ROOT庫(你認爲),所有文件在回購加什麼之前(語法VCS依賴)忽略,用手只添加需要的文件回購

略有不同的版本:忽略除PATH/TO/config目錄以外的所有目錄(理論上可以在Mercurial中使用Negative Lookahead,同樣的技術在不同的名稱下也存在於Git中,AFAICR)o ñ調試階段hg-isignored extensionsource上到位桶),將是非常有用的 - 對Mercurial的正則表達式

更多nice'n'easy方式

在每個$HOME/module/submodule/config創建%REPO-ROOT庫和忽略什麼(?)。 Link在超回購所有小型回購與Git的子模塊|子樹,Mercurial的subrepos或者只是使用多個遙控器和分支機構在本地回購(LIVE儲存庫的集合)


最後說明

忘掉RCS(也是CVS,Monotone,Bazaar,ClearCase,Rational Team Concert),不要買頭疼

相關問題