我有一个post-checkout
钩子,我在我的所有回购中使用本地(它将我的tmux会话重命名为repo-name/branch-name
)
对于我正在处理的项目,我们刚刚添加了一个post-checkout
钩子,我们要求整个团队使用。
我不想将我个人钩子的逻辑添加到团队范围的钩子中,因为它对每个人都没用,但我也不想放弃它。
有没有办法在单个git-hook触发器上执行多个脚本?我希望每个git checkout
执行全组合post-checkout
挂钩和执行我的个人post-checkout
挂钩。我不能将两个文件命名为同一个东西 - 有没有办法解决这个问题?
更新:一个好方法是,“make post-checkout
调用另外两个脚本。我喜欢这个想法,它可能就是解决方案。
但是,现在我们有一个自动设置步骤,将post-checkout
复制到hooks目录中。如果可能的话,我想以不干扰现有团队设置的方式执行此操作,如果我稍后再次运行该安装步骤,则不需要手动调整。
如果那不可能,那很酷,但我对更有创意的解决方案感到好奇。
答案 0 :(得分:6)
不确定。创建一个调用其他脚本的包装器post-checkout
钩子脚本:
#!/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
这对于第一种情况实际上也应该是无害的,尽管如果你通过手动运行它来测试它,你需要确保你总是从某个地方重定向stdin(可能是/dev/null
)。