我想克隆一個svn倉庫,除了svn的根文件夾中的一個文件夾。git svn克隆除了特定的文件夾
我該怎麼辦呢?
我可以做git svn clone svnrepo/dir/sb-dir/
如果我只需要sb-dir
,但我需要除design
文件夾
我想克隆一個svn倉庫,除了svn的根文件夾中的一個文件夾。git svn克隆除了特定的文件夾
我該怎麼辦呢?
我可以做git svn clone svnrepo/dir/sb-dir/
如果我只需要sb-dir
,但我需要除design
文件夾
的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倉庫的子模塊參考。
可以使用--ignore-paths=<regex>
選項git svn init
或git 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>)
這樣的正則表達式。
謝謝!但我的問題是設計文件夾大約700 MB; git svn clone需要幾個小時。整個項目的其餘部分放在一起是在10幾MB。首先我知道這是錯誤的,把它放入回購。但我想用一些理智的方式在本地使用git進行處理。似乎不可能,然後 – 2010-03-03 14:51:18
@ becomingGuru:理智的方法是將其拆分回來,並將其設計分離出來,作爲子模塊引用。這樣,你就可以完全*實現你正在尋找的東西。見http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository – VonC 2010-03-03 15:02:28