2011-04-22 76 views
5

我們有幾個項目共享大部分代碼/配置文件。我們使用的框架具有特定的目錄和文件依賴性,這限制了我們可以分離通用代碼的程度。例如, '普通', '了projectA' 和 '項目B' 之間,我們可能有:使用通用代碼的Git項目

/了projectA

  • /shared_dir1
    • 庸俗的
    • fileA1
    • fileA2
  • /common_dir2
    • common2
  • /DIR3
    • fileA3
  • common3
  • fileA4

/項目B

  • /shared_dir1
    • 庸俗的
    • fileB1
  • /common_dir2
    • common2
  • /DIR3
    • fileB2
    • fileB3
  • common3
  • fileB4
  • fileB5

我們目前與3個的Git項目管理這樣的: '通用', '了projectA' 和 '項目B',與普通的文件分離到 '共同' 和項目特定的文件在自己的項目中。 'projectA'和'projectB'有一個.gitignore,其中包含所有常見目錄的條目和每個共享目錄下的所有常用文件。腳本將'common'複製到您想要工作的項目中,並在那裏完成開發。一旦完成更改,另一個腳本會將所有常見目錄和常用文件複製回「常用」。然後通過'git status'可以看到'common'和項目的變化。

這顯然伴隨着在'common',keep .gitignore精確和在'projectA'和'projectB'內切換分支之間來回複製的頭痛。然而,當我們計劃'projectC-F'時,這種方法看起來不錯,因爲我們可以避免將常見變更合併到N個項目中。

尋找如何更好地維護這種類型的結構的建議。鑑於沒有隔離,子模塊似乎是可撤銷的,除非我們做了大量的隔離。我已經看到了一些使用符號鏈接的有希望的替代方案,但是它也帶有問題。任何意見,將不勝感激。

+0

你有沒有想出一個辦法來管理你的項目? – maguirre 2015-06-30 21:02:26

回答

1

如果你願意把共享代碼一個單獨的git倉庫,你可能會對git submodules感興趣。一個子模塊允許你在另一個repo中包含一個git repo。

這裏有幾個環節:

+0

他提到了子模塊 - 「由於沒有隔離,子模塊似乎是可撤銷的,除非我們做了大量的子模塊」 – manojlds 2011-04-22 01:14:13

+0

啊,我必須掩飾最後一段......無論如何,我認爲子模塊仍然是一個很好的解決方案他描述的問題。 – 2011-04-22 01:15:16