2015-06-12 68 views
0

我正在兩個不同的網站上工作,每個網站都有自己的git存儲庫。我有一些通用的代碼(PHP和JavaScript),這兩個站點都是通用的,我使用一個符號鏈接保存在我的開發機器上的一個單獨的libs文件夾中,以便兩個本地網站都相信這個libs文件夾位於網站。存儲在git中的兩個項目之間共享的本地文件

我想用git來管理libs文件夾。我能想象兩種不同的途徑:libs文件夾的

  • 兩個遠程副本,一個在每個站點回購
  • 第三git倉庫,只是爲了管理libs文件夾,有兩個遠程站點回購的方式要知道這個libs回購存在的存在,這樣所有的都被追蹤到一起。

我希望能幫助您決定這兩個選項哪一個更可靠(或者如果有更好的選擇)。我也很感激幫助你理解如何設置選擇的選項。

回答

1

這就是git submodules的製造原因(另見Pro Git)。

libs是一個單獨的代碼實體。它在兩個(也可能是更多)項目之間共享,並且可以獨立版本化。子模塊的完美候選人。

要做到項目答:

  1. 刪除符號鏈接,只留下在項目A.文件(GIT可能不會趕上項目B的變化)
  2. Detach (move) subdirectory into separate Git repository
  3. 將新的子模塊推送到它自己的遠程。您可以使用任何Git託管(Bitbucket適用於免費關閉回購)或本地文件夾(安全,但容易移動和重命名)。

要做到在項目B:

  • 提交數據的丟失。 git add -ugit commit -m'detached libs'
  • 添加一個子模塊從遠程:git submodule add <repo-url> [<local path>]
  • 現在你可以檢查它是如何工作,推動和來自回購拉動。

    額外的問題:

    爲什麼不直接從克隆子模塊B中的子模塊在一?
    這使得更獨立和靈活的結構。如果你有N個項目呢?那麼如果你想刪除A呢?如果你想在你的文件系統中移動A怎麼辦?該計劃將打破。

    爲什麼不只是啓動這兩個子模塊git-subtree
    承諾的sha1還取決於創建時間。所以這兩個子模塊將具有完全相同的內容(並且匹配斑點和樹的sha1-s),但是完全不同的歷史。你將不得不合並它們,這是額外的工作。

    相關問題