git svn clone除特定文件夹外

Lak*_*sad 7 svn git version-control git-svn

我想git克隆一个svn存储库,除了svn的根文件夹中的一个文件夹.

我该怎么做?

git svn clone svnrepo/dir/sb-dir/如果我只sb-dir需要,我可以做,但我需要dirdesign文件夹之外的所有文件夹(和文件)

Von*_*onC 3

如果您使用的是最新的 Git1.7.0,它提供了稀疏结帐功能。

“稀疏签出”功能允许仅签出工作树的一部分。

有关更多信息,请参阅Git Sparse Checkout SO 问题:您仍然需要克隆所有存储库,但您可以仅使用克隆存储库的部分内容来签出(即填充工作树))


唯一的其他方法是转换design为子模块。
正如GitPro 书中提到的

Git 的子模块支持允许存储库作为子目录包含外部项目的签出。
子模块维护自己的身份;子模块支持仅存储子模块存储库位置和提交 ID,因此克隆包含项目(“超级项目”)的其他开发人员可以轻松克隆同一修订版的所有子模块。
超级项目的部分签出是可能的:您可以告诉 Git 不克隆、部分或全部子模块。

子模块是我知道实现“部分克隆”的唯一方法,因为在您的情况下,克隆部分是有问题的。
根据您的评论:

我的问题是设计文件夹大约有 700 MB;git svn clone 需要几个小时。该项目的其余部分加起来只有 10 兆字节。

但这意味着修改 SVN 存储库,将其隔离design为“外部”引用,然后git svn clone在克隆的 Git 存储库中添加子模块引用。