git - 为 git fetch 命令设置动态深度
问题描述
在我的 gitlab CI 中,默认情况下会获取最后 50 个提交。为了改变这一点,我可以使用额外的标志,额外的标志接受git fetch命令的所有选项。
例如,我可以将其更改为
variables:
GIT_FETCH_EXTRA_FLAGS: --depth 100
这样就可以获取最后 100 个提交。
但我想获取自上次发布以来的所有提交(在我的情况下总是有一个标签)。在我的管道中,我已经在做类似的事情
- tag=$(git describe --tags --abbrev=0)
- base=$(git rev-parse $tag)
获取带有最后一个标签的提交,我在管道中处理它。
是否可以动态设置深度,或者是否有另一个选项可以使用最后一个标签?因为如果我设置了一个“硬编码”深度值并且在某个时间会有更多的提交,那么管道就会失败。
解决方案
您最好的选择是使用该变量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 作业中安装所需的包,但每次管道运行时都会发生这种情况。最好根据您正在使用的映像创建自定义映像,在那里安装您需要的包,然后在 CI 中使用该映像。
推荐阅读
- ansible - Ansible 角色任务委托
- webpack - 如何配置 Vue CLI 3 以利用 webpack 根文件夹别名?
- ruby-on-rails - Rails 5 HABTM 未经许可的参数
- python - 使用 bs4 获取孙节点
- python - 关键 - 将查询循环转换为 1 个有趣且整合的查询
- c# - 将接口转换为其实现
- c++ - C++ 类对象初始化
- android - 如何使用 Android 常量值作为常量名?
- android - transformNativeLibsWithStripDebugSymbolForRelease 执行失败,mips64el-linux-android-strip
- python - 来自端口的 Apache Beam 输入