我想克隆一个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