2010-03-03 32 views

回答

3

dir內的所有文件夾(文件)如果您使用的是latest Git1.7.0,它提供了一個稀疏結賬功能。

「稀疏結帳」功能只允許檢出部分工作樹。

更多見Git Sparse Checkout SO question:你仍然需要克隆所有回購,但你可以檢出(即填寫你的工作樹)用克隆的回購只有部分)


唯一其他方式會將design轉換爲子模塊。
由於GitPro book mentions

Git的子模塊支持允許存儲庫包含作爲子目錄,外部項目的結算。
子模塊保持自己的身份;子模塊支持僅存儲子模塊存儲庫位置和提交ID,因此克隆包含項目(「超級項目」)的其他開發人員可以輕鬆地克隆相同修訂版本中的所有子模塊。
超級項目的部分簽出是可能的:您可以告訴Git克隆沒有,部分或全部子模塊。

子模塊我知道,實現「局部克隆」,因爲n您的情況下,它是克隆一部分是有問題的唯一途徑。
從您的評論:

我的問題是,設計文件夾是一些700 MB; git svn clone需要幾個小時。整個項目的其餘部分放在一起是在10幾MB。

但是,這意味着修改SVN回購的,以分離作爲design「外部」參考,然後git svn clone並添加在克隆git倉庫的子模塊參考。

+1

謝謝!但我的問題是設計文件夾大約700 MB; git svn clone需要幾個小時。整個項目的其餘部分放在一起是在10幾MB。首先我知道這是錯誤的,把它放入回購。但我想用一些理智的方式在本地使用git進行處理。似乎不可能,然後 – 2010-03-03 14:51:18

+0

@ becomingGuru:理智的方法是將其拆分回來,並將其設計分離出來,作爲子模塊引用。這樣,你就可以完全*實現你正在尋找的東西。見http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository – VonC 2010-03-03 15:02:28

2

可以使用--ignore-paths=<regex>選項git svn initgit svn fetch,或svn-remote.<name>.ignore-paths添加配置選項.git/config。這被記錄爲「這允許指定一個Perl正則表達式,這將導致SVN從結帳中跳過所有匹配的路徑。」有關更多詳細信息,請在manual中搜索「忽略路徑」。

this answer中嘗試實驗後,我得知正則表達式似乎應用於存儲庫根目錄或文件的完整路徑。因此,如果你有一個標準的版本庫佈局,並且想從每個trunk/branch /標籤中排除相同的東西,你可以使用像^(trunk|((branches|tags)/[^/]+))(<file-to-ignore>|<other-file-to-ignore>)這樣的正則表達式。