如何限制性地更新子模块?

时间:2015-07-02 14:53:57

标签: git git-submodules

我有一个git项目,我想克隆和更新子模块。我用

克隆项目
git clone --single-branch -b my_branch ssh://my_repo my_repo

我可以使用

初始化并拉出子模块
git submodule init
git submodule update

我遇到的问题是所有存储库的git历史记录(~1.3Gb)都是通过每个子模块的更新来提取的。我的.gitmodules文件看起来像

[submodule "mod_1"]
  path = path/to/mod_1
  url = my_repo
  branch = mod_1_branch
[submodule "mod_2"]
  path = path/to/mod_2
  url = my_repo
  branch = mod_2_branch

在上面的git clone命令中,我使用--single-branch选项来解决整个存储库的问题。据我所知,此选项不适用于git submodule update

如何限制子模块仅提取其分支历史记录?是否有适当的自定义命令(如update> custom command下所述here)?

1 个答案:

答案 0 :(得分:1)

不幸的是,目前你无法浅提取(git fetch --depth=1)指定的提交对象。

然而,在Git 2.5+(2015年第2季度)中,通过新的服务器端配置uploadpack.allowReachableSHA1InWant,可以获取单个提交(无需克隆完整的存储库)。

其文件说:

  

uploadpack.allowReachableSHA1InWant ::

     

允许upload-pack接受请求获取的获取请求       可以从任何参考提示访问的对象。但请注意       计算对象可达性在计算上是昂贵的       默认为false

有关详细信息,请参阅Pull a specific commit from a remote git repository