2012-10-04 15 views
3

我正在使用神話般的基於HTML5 Boilerplate的Magento-Boilerplate主題(GitHub回購)並使用我自己的兒童主題(私人Git回購)擴展它,使用Magento商店(SVN回購連接到Git)。這些都存在於一個單一的www文件夾中,恰好是所有三個項目的頂級目錄。我想幹淨地將所有這些集成到它們各自的存儲庫中,但是我發現在單個目錄中的多個存儲庫的唯一解決方案是子模塊(我喜歡這個想法,但是據我所知,要求每個項目都要在主Git倉庫的子文件夾中)並將文件符號鏈接到位(應該可以工作,但有點麻煩,而且很煩人)。在具有相同頂級父目錄的文件夾中使用多個Git倉庫?

有沒有乾淨的方法來完成這件事?這是我的文件夾結構的一個例子。我已表示在每個文件/目錄所在其回購(S) - M = Magento的,B =樣板,P =個人:

/www 
    |-- app [M] 
     |-- frontend [M] 
      |-- base [M] 
      |-- magento-boilerplate [B] 
       |-- default [B] 
       |-- myprivatetheme [P] 
    |-- skin [M] 
     |-- frontend [M] 
      |-- base [M] 
      |-- magento-boilerplate [B] 
       |-- default [B] 
       |-- myprivatetheme [P] 
    |-- .htaccess [M][B][P] 
    |-- favicon.ico [M][P] 

正如你可以看到,即使沒有整個htaccess的和的favicon.ico是在多個倉庫混亂(我只是gitignore或--assume - 在Magento和Boilerplate倉庫中修改它們,並使用我的私人倉庫)頂級目錄是www,因爲Magento將代碼和主題分割成單獨的文件夾www的共同父母。由於這個原因,你甚至可以在技術上說,應用程序,皮膚和各種前端文件夾也存在於多個回購站中,因爲它們必須存在於每個回購站中,一直到結構的頂層目錄。

是從單獨的文件夾sym​​-linking連接這些回購我唯一的解決方案?這不是一個大問題,但我真的很想知道Git是否足夠靈活來處理我的情況。看起來modman可能是專門爲創建這個符號鏈接問題而創建的。

回答

3

我確認有沒有簡單的方法來映射一個Git回購結構向部署結構(這基本上是你的文件夾結構顯示的內容:部署到Web文件夾)

modman」似乎是一個有效的自動化方法,但是你需要記住,如果你在其中一個子模塊中做任何改變,你將需要提交它們,將它們推送到它們各自的上游,轉到父git回購,再次提交並推送。
所有這些似乎都沒有被modman考慮到。

OP Colt McCormack報告研究modgit

modgit是優秀的modman工具的替代品。
直接從它啓發下來,modgit允許你在項目中物理地部署Git模塊(無符號鏈接)
此外,您可以定義包含/排除過濾器來僅部署您選擇的文件和文件夾。

+0

正是。這就是爲什麼子模塊看起來如此吸引人。今天早上我實際上找到了一個modman的潛在替代品,叫做[modgit](https://github.com/jreinke/modgit),聽起來它可以做更多我正在尋找的東西,但我需要找到一些文檔/示例或者只是在測試服務器上玩它來發現它是否是一個好的解決方案。當我這樣做時,我會報告。 –

+1

@ColtMcCormack優秀。我已經在更多可見性的答案中加入了modgit。 – VonC

2

工具vcsh是爲在幾個回購(SSH,zsh中,VIM,Emacs的,...),而不使用符號連接組織在$ HOME文件所做的。 vcsh使用假裸git回購爲此。它也與mr一起工作,它可以輕鬆組織多個回購(同步拉,推,...)。

儘管vcsh只適用於$ HOME,但它可以用於任何目錄。

vcsh的readme文件是一個很好的開始,應該幫助你(決定)它是否是你正在尋找的工具。理查德·哈特曼,VCSH的維護者,談論它在FOSDEM 2012:info - slides - video

1

還有multigit

Multigit允許你通過一個公共目錄檢出多個git倉庫,並提供簡單的工具讓你繼續像以前一樣使用git,而不會讓你的方式受到影響。

對於由獨立開發的不同組件製作的項目很有用,但需要在項目的目錄結構的不同部分部署文件。

這不能使用git submodules或git子樹來完成,它只允許子項目在其自己的子目錄中部署文件。 Multigit允許子項目在項目的任何目錄中部署文件,類似於聯合文件系統,其中每個存儲庫都是一個圖層。

一些例子,變革管理和模塊管理的這個組合可能是有用的:

  1. 管理在一個單獨的存儲庫中的Web應用程序進行的自定義。
  2. 將您的主目錄置於源代碼管理之下。
  3. Linux發行版的軟件包和/或配置管理器。
相關問題