2010-07-13 135 views
4

我試圖用git設置我的(Zend Framework)開發環境(或者更重要的是我的目錄結構)。但是,我的根本問題與涉及的特定庫無關,但更重要的是如何讓git完成我想要的。git嵌套倉庫 - 子模塊與符號鏈接與其他

我打算讓我的項目根目錄爲/home/jsuggs/project
我也將在/ Zend Framework(ZF),Doctrine和其他庫上工作,但我只關注ZF,因爲其中一個的解決方案可能與其他庫中的解決方案相同。

我將在/home/jsuggs/zf2中克隆ZF2存儲庫。
我想有/home/jsuggs/project/application/library/Zend參考/home/jsuggs/zf2/library/Zend

我希望能夠在本地在兩個存儲庫(project和zf2)上工作,其中zf2中的切換分支直接影響項目。

我的問題是如何設置的Git,這樣的深度嵌套庫可以在開發過程中引用我的本地版本,但在部署到生產環境,也可以設置爲(其它/任意)的位置嗎?

我也想避免的路徑是絕對的,因此,如果別人對項目工作,然後在庫路徑不會引用到我的主目錄。

我正在調查使用符號鏈接和git submodules,但想知道是否有這種類型的安裝程序的「最佳做法」。另外,我完全有可能只是做錯了,所以可以自由地說「只是做X代替」。

回答

7

每當你需要有不同的一組文件的具體配置(具體修訂版)中,component-based approach是最好的。

用符號鏈接,你不知道什麼確切的ZF2項目的版本(通過路徑/home/jsuggs/project/application/library/Zend)被引用。

但隨着子模塊,你將有:

  • 存儲在您的項目內的子組件ZF2的確切版本(包括一個不同的生產部署,如果你想管理「prod」分支) ,
  • 改變/修改ZF2直接從/home/jsuggs/project/application/library/Zend(前提是你犯ZF2內的那些變化,那麼內/home/jsuggs/project/application/library提交ZF2全新改版,即你的父項目)的能力。
+0

謝謝,可能會標記爲解決方案。但首先需要澄清一下如何通過Git和子模塊來實現這一點。 當我添加對zf2子模塊的引用時,我應該在其中添加引用: a)上游zf2主分支? b)我的zf2個人github克隆? c)我的zf2本地分支? 我寧願立即更改我的本地zf2分支效果項目,但意識到我可能必須執行「git submodule update」才能將它們拉入。歡迎任何建議/建議。 再次感謝您的迴應! – jsuggs 2010-07-13 17:28:26

+0

此外,我發現以下鏈接非常有用,因爲子模塊有點令人困惑(或相當棘手)來獲得設置。 http:// chrisjean。/ 2009/04/20/git-submodules-adding-using-removing-and-updates/ – jsuggs 2010-07-13 17:28:53

+0

@jsuggs:read also http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 on子模塊。我喜歡引用本地克隆爲了保持每個本地依賴。但是,一旦你引用了一個子模塊回購,你可以在回購中選擇你需要的任何分支(假設你回到父回購並再次提交,以註冊新的子模塊參考) – VonC 2010-07-13 18:04:20