gpt4 book ai didi

jenkins 管道的 GIT 交叉 check out 和依赖性检查

转载 作者:行者123 更新时间:2023-12-05 07:07:58 25 4
gpt4 key购买 nike

我有以下 git 项目结构:

MAIN_PRJ
SUB_MODULE1
SUB_MODULE2
SUB_MODULE2_1
SUB_MODULE3
SUB_MODULE3_1
SUBMODULE_3_1_1

作为我的 jenkins 作业触发器的一部分,传递的触发器消息包含窗帘子模块的获取命令,作为字符串传递。例如:

git fetch https://git.server/SUB_MODULE1 hash_commit;git fetch https://git.server/SUB_MODULE2_1 hash_commit;git fetch https://git.server/SUB_MODULE3_1_1 hash_commit

我们将它们用于交叉依赖性检查。我正在寻找一种方法来递归地进行所有这些“获取”。

方向之一——

  1. 运行git submodule foreach --recursive 'git remote -v'命令

  2. 从它那里拿到 Remote

  3. 比较远程路径和获取路径

  4. 如果为真则执行获取命令

git remote -v 命令返回fetch和push的origin,有没有办法只获取其中一个?有没有办法将这个远程值存储为参数?递归运行期间的路径存储为 pwd 参数。

在我的想象中它会是这样的:

foreach fetch_remote in fetchlist:
git submodule foreach --recursive 'git remote -v;if [$origin==$fetch_remote] then fetch_command fi'

还有其他想法吗?

更新:到目前为止,我设法结合了以下部分有效的命令:

foreach fetch_remote in fetchlist:
git submodule foreach --recursive 'sub_remote=$(git remote get-url origin);if[$sub_remote==$fetch_remote];then $fetch_command; fi'

但是我得到了一个错误,为了解释让我们假设 fetch_remote="http://git_remote/SUB_MODULE2_1"

/usr/lib/git-core/git-submodule: 1: eval: [http://git_remote/SUB_MODULE2_1==http://git_remote/SUB_MODULE2_1]: not found

最佳答案

找到适合我的解决方案:

foreach fetch_remote in fetchlist:
git submodule foreach --recursive 'if [ "$(git remote get-url origin)" = "$fetch_remote" ]; then fetch_command; fi'

关于jenkins 管道的 GIT 交叉 check out 和依赖性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61982987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com