Git 2.8无法更新子模块

时间:2019-01-02 03:26:52

标签: docker git-submodules

我正在尝试build gRPC在docker映像中,但是使用git版本2.8时更新子模块失败。具体来说,这个Dockerfile:

FROM alpine:3.3
RUN apk update && apk add git
RUN git clone -b 'v1.17.1' --depth 1 https://github.com/grpc/grpc
RUN git --version
RUN cd grpc && git submodule update --init --depth 1

显示git version 2.8.6并引发以下错误

Cloning into '/grpc/third_party/abseil-cpp'...
error: no such remote ref cc4bed2d74f7c8717e31f9579214ab52a9c9c610

如果我切换到alpine:3.8,则会得到git version 2.18.1,并且构建成功。这是早期版本的git中的错误吗?有解决方法吗?

注意:

  • 我指定--depth 1是因为我不需要提交历史记录。
  • 我有一些不相关的约束,这使得使用较新的版本变得困难。

1 个答案:

答案 0 :(得分:1)

正如您在“ How to make shallow git submodules?”中看到的那样,自Git 2.8以来已经进行了多种演变。

如果可用,请尝试仅使用一个步骤:

git clone -b 'v1.17.1' --recurse-submodule --depth 1 https://github.com/grpc/grpc