代码之家  ›  专栏  ›  技术社区  ›  user3142695

为git fetch命令设置动态深度

  •  0
  • user3142695  · 技术社区  · 3 年前

    在我的gitlab CI中,默认情况下会提取最后50个提交。要更改此项,我可以使用 extra flag 并且该额外标志接受的所有选项 git fetch 命令

    例如,我可以将其更改为

    variables:
        GIT_FETCH_EXTRA_FLAGS: --depth 100
    

    这样就可以提取最后100个提交。

    但我想获取自上次发布以来的所有提交(在我的情况下,它总是有一个标记)。在我的计划中,我已经在做一些事情,比如

    - tag=$(git describe --tags --abbrev=0)
    - base=$(git rev-parse $tag)
    

    以获得带有最后一个标记的提交,然后我在管道中处理它。

    是否可以动态设置深度,或者可能还有其他选项可以使用最后一个标签?因为如果我设置了一个“硬编码”的深度值,并且在某个时候会有更多的提交,那么管道就失败了。

    0 回复  |  直到 2 年前
        1
  •  1
  •   Adam Marshall    3 年前

    您的最佳选择是使用变量 GIT_STRATEGY: none 告诉Runner在设置作业时根本不要克隆/获取存储库,而是在脚本部分运行您自己的git命令。

    例如

    ...
    A Job:
      stage: a_stage
      image: alpine:latest # super small image to promote quick CI pipelines
      variables:
        - GIT_STRATEGY: none
      before_script:
        - apk add git # See notes below
      script:
        - git ... # whatever you need to do
        - ...
    

    注意:在CI作业中只安装所需的包是最简单的,但每次管道运行时都会发生这种情况。最好是 create a custom image based on the image you're using, install the packages you need there, and use that image in CI .

        2
  •  0
  •   Wayne Walker    2 年前

    这将导致fetch无法检索1.6.1版本中的所有内容。

    注意:1.6.1本身的提交将不会被提取。

    git fetch --shallow-exclude 1.6.1