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