2010-04-19 94 views
1

項目佈局:git的基準公共目錄/回購

/project_a 
    /shared 
/project_b 
    /shared 
/shared 

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

我們現在的解決方案是將project_a,project_b和shared分別放在不同的git倉庫中,並在project_a和project_b中使用git子模塊。然而,這看起來比用svn:externals的單一svn回購複雜得多。在git中處理常見元素的正確方法是什麼?

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

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

  1. 提交共享
  2. 推變化中的份額變化
  3. 在父目錄
  4. 再次添加共享目錄
  5. 推父目錄

與svn中的單個提交相比,這看起來更復雜。而錯過其中的一個步驟會導致巨大的版本控制混亂。我在這裏錯過了什麼嗎?

回答

1

子模塊是正確的答案。

事實上,你不保存SVN的單一方法是pretty much by design with a DVCS(其中你標記和引用存儲庫爲所有)。

它允許您引用一個確切的配置(請參見submodules true nature),即您將始終引用一個精確的SHA1引用(與​​相反,其中您沒有義務指出修訂版號)。

+0

感謝您的詳細解答VonC。不得不跑4步對我們來說是一個破壞者,回到svn就是了 – phillee 2010-04-25 19:51:09