一千萬個為什麽

搜索

git引用common目錄/ repo

項目布局:

/project_a
   /shared
/project_b
   /shared
/shared

project_a和project_b都需要包含共享文件夾。使用svn,我們使用了svn:externals,它工作正常,因為svn可以引用子目錄(也有相對路徑)。但是,我們轉移到git,它似乎不支持檢查子目錄。

我們現在的解決方案是將project_a,project_b和all共享在不同的git repos中,並在project_a和project_b中使用git子模塊。然而,這似乎比使用svn:externals的單片svn repo復雜得多。處理git中常見元素的正確方法是什麽?

編輯: 共識是子模塊是要走的路。但是使用它一天,使用它似乎非常不友好。

在共享文件中進行更改後,我必須:

  1. 提交共享
  2. 中的更改
  3. 推送分享中的更改
  4. 在父目錄
  5. 中再次添加共享目錄
  6. 推送父目錄

與svn中的單個提交相比,這似乎更復雜。並且缺少其中一個步驟會導致巨大的版本混亂。我在這裏錯過了什麽嗎?

最佳答案

子模塊是正確的答案。

您不保留SVN的整體方法的事實是幾乎是設計使用DVCS (您將存儲庫標記為 all )。

這允許您引用一個確切的配置(參見子模塊的真實性),就是你將始終引用精確的SHA1引用(而不是 svn external ,您沒有義務指明修訂號)。

轉載註明原文: git引用common目錄/ repo