2011-03-17 113 views
2

我有兩個git項目回購有兩個或三個共同的文件。git post-commit鉤子

事情是這樣的:

Project A ------> helper_functions

Project B ------> helper_functions

我在想,如果有一個接受的方法來「共享」回購之間的這些常見的輔助文件,讓我沒有在兩個回購中維護單獨的副本。

會像一個post commit鉤子,當項目A的helper_functions被更新時更新項目B中的helper_functions?或者是否有一種更加無縫的方法來確保兩個項目都有最新版本的helper_functions文件,並且該文件會自動包含在項目的任何包中?

感謝您接受任何想法或資源處理此問題。

另外,我想補充一點,這兩個項目都有合作者,所以它最好是自動的,所以我們都在同一頁面上,而不必使用軟鏈接或別名。

回答

4

有些人可能會說這只是少數文件的矯枉過正,但對我來說,這聽起來像是使用git支持子模塊的好例子。基本上,你會創建一個名爲helper_functions新的存儲庫,並添加到每個現有資源庫與一個子模塊:

git submodule add git://foo/bar/helper_functions.git helper_functions 

有一些細微之處做然而有子模塊的工作,所以這將是值得先做一些閱讀。我喜歡description in the git manual作爲出發點,但還有很多其他很好的解釋,例如那從Pro Git

但我不會創建鉤子來提交和推送子模塊,但是 - 我認爲最好仔細考慮何時更新主存儲庫中提交的子模塊的版本。但是,我發現非常有用的是使用commit-submodule腳本,該腳本確保在提交存儲庫中的新子模塊版本之前推送子模塊更改。

+0

感謝您的快速和徹底的答案馬克,我從來沒有遇到過這個功能的混帳。 – julio 2011-03-17 21:51:57

+0

小心一點。你很快就會發現自己正在利用我的答案。 – 2011-03-17 21:59:31

0

我會使用一個子模塊,但會推薦使用「git slave」來處理共享存儲庫的任何更新。

另一種方法是使用子樹。