2011-05-01 47 views
1

所以情況就是這樣。我有一個Git倉庫與多個子模塊。頂級目錄和所有子模塊都包含Visual Studio 2010解決方案。在子模塊更新上調用什麼githooks?

頂層存儲庫取決於最新的子模塊,並且每次更新子模塊時都需要重建。我想做什麼,因爲有任意數量的子模塊,所以在git中進行某種更新後的掛鉤來編譯剛剛更新的子模塊。

所以我的問題是:子模塊更新時調用了什麼鉤子(如果有的話)?看來後檢查可能是我想要的,但我不確定。

我們使用Git for Windows(msysgit)作爲後端使用TortoiseGit,如果這有所幫助。

回答

1

這應該工作,爲post-update hook回購
您將需要監控.gitmodules文件有任何改動,以檢測在該文件中的任何改變(這表明另一個克隆你的父回購已更改子模塊並在父回購中提交新的參考)。
然後,您可以:

  • 檢測哪些子模塊已經改變
  • 決定,如果你想使你的子模塊上的最新(git submodule update --recursive
  • 重新編譯相關的子模塊

但假設父回購的克隆已被修改爲引用子模塊的新提交。

如果子模塊的任何母公司回購,那麼同樣post-update鉤(仍然在父母回購)的單獨更新,父回購的結帳/更新,需要:

  • 去各子模塊和執行讀取
  • 檢查,如果取引入任何新的提交
  • 決定是否要上最新,此時從子模塊拉動變化
  • 回去父帶給你的子模塊回購和承諾,以便註冊改變子模塊的新SHA1
  • 重新編譯需要git pull(即,已更改)

你可以在每個子模塊的安裝後更新掛鉤,但上面的方法能更好地伸縮,當你從你的父母回購添加或刪除子模塊,因爲它集中了檢測過程在一個地方( parent repo的post-update掛鉤)。

相關問題