gpt4 book ai didi

git - 同一个触发器的多个 git 钩子(Hook)

转载 作者:太空狗 更新时间:2023-10-29 13:33:37 25 4
gpt4 key购买 nike

我有一个post-checkout Hook ,我在我的所有 repo 协议(protocol)中都在本地使用它(它将我的 tmux session 重命名为 repo-name/branch-name)

对于我正在从事的项目,我们只是添加了一个post-checkout Hook ,我们要求整个团队使用它。

我不想把我个人hook的逻辑加入到team-wide hook中,因为它不是对每个人都有用,但我也不想放弃。

有没有办法在一个 git-hook 触发器上执行多个脚本?我希望每个 git checkout 都执行团队范围内的post-checkout Hook 执行我个人的post-checkout Hook 。我不能让两个文件同名 - 有没有办法解决这个问题?

更新:一个好的方法是“让 post-checkout 调用其他两个脚本。我喜欢这个想法,它可能是解决方案。

但是,现在我们有一个自动设置步骤,可以将 post-checkout 复制到 hooks 目录中。如果可能,我希望以不干扰现有团队设置的方式执行此操作,并且如果我稍后再次运行该安装步骤,则不需要我手动调整。

如果那不可能,那很好,但我很好奇更有创意的解决方案。

最佳答案

当然。创建一个调用其他脚本的包装器 post-checkout 钩子(Hook)脚本:

#!/bin/sh

$GIT_DIR/hooks/my-tmux-post-checkout "$@"
$GIT_DIR/hooks/corporate-post-checkout "$@"

您可以更高级地迭代 post-checkout.d 目录或其他目录中的任意数量的脚本,但基本思想是相同的。

史蒂夫更新

对于期望在 stdin 上输入的脚本:

#!/bin/sh

tmpfile=$(mktemp hookXXXXXX)
trap "rm -f $tmpfile" EXIT
cat > $tmpfile

$GIT_DIR/hooks/my-tmux-post-checkout "$@" < $tmpfile
$GIT_DIR/hooks/corporate-post-checkout "$@" < $tmpfile

这对于第一种情况实际上也应该是无害的,尽管如果您通过手动运行它来测试它,您将需要确保您始终从某个地方重定向标准输入(可能是 /dev/null).

关于git - 同一个触发器的多个 git 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30104343/

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