仅当 运行ning git 工作树添加命令时如何 运行 git 挂钩
How to run a git hook only when running git worktree add command
我想在调用命令 git worktree add
时 运行 一个 shell 脚本。阅读 docs for post-checkout
似乎对 git worktree add
会 运行 但对于其他我不想使用它的命令也会 运行,例如 [=16] =].
还有其他我可以使用的挂钩吗?或者也许我可以使用 post checkout 但有脚本设置所以如果它不是 git worktree add
命令它退出?
我想这样做的原因是 运行 一组命令来设置我的目录,当我 运行 git worktree add
时需要,但我不需要为仅使用 git checkout
命令的普通 git 存储库执行此设置。
我想出了一个解决方案,虽然我不确定它有多难。我将 post-checkout
挂钩用作 bash 脚本,并且在顶部有以下几行。
if ! [[ "[=10=]" =~ ".bare/hooks/post-checkout" ]] \
|| ! [[ "" == "0000000000000000000000000000000000000000" ]]; then
echo "WARNING: post-checkout hook running for reason otherwise than git worktree add, bailing";
exit 0;
fi
# Do something down here every time we run `git worktree add`
这是如何工作的:$0 是脚本的路径,$1 是前一个头的引用。
按照惯例,我一直在将我的裸存储库克隆到一个名为 .bare
的目录中,这是第一个语句正在检查的目录。第二条语句检查 HEAD 的前一个 ref 是否为 0 字符串。如果您只是使用其他结帐命令(例如 git checkout
),这会捕获并退出,因为在这种情况下,先前的 HEAD 不是 0 的字符串,因为它指向提交。但是,似乎是因为我每次 运行 git worktree add
都会创建一个新的 HEAD,它将之前的 HEAD ref 设置为该字符串的 0,这使我可以断言该条件。
这确实适用于我的用例,所以我不确定是否有更好的方法。如果有人有更好的建议,请告诉我。
P.S。我可以在我的 post-checkout
脚本中简单地使用 pwd
来获取新分支的目录,这对于我想在钩子中 运行 的命令很有用。
我想在调用命令 git worktree add
时 运行 一个 shell 脚本。阅读 docs for post-checkout
似乎对 git worktree add
会 运行 但对于其他我不想使用它的命令也会 运行,例如 [=16] =].
还有其他我可以使用的挂钩吗?或者也许我可以使用 post checkout 但有脚本设置所以如果它不是 git worktree add
命令它退出?
我想这样做的原因是 运行 一组命令来设置我的目录,当我 运行 git worktree add
时需要,但我不需要为仅使用 git checkout
命令的普通 git 存储库执行此设置。
我想出了一个解决方案,虽然我不确定它有多难。我将 post-checkout
挂钩用作 bash 脚本,并且在顶部有以下几行。
if ! [[ "[=10=]" =~ ".bare/hooks/post-checkout" ]] \
|| ! [[ "" == "0000000000000000000000000000000000000000" ]]; then
echo "WARNING: post-checkout hook running for reason otherwise than git worktree add, bailing";
exit 0;
fi
# Do something down here every time we run `git worktree add`
这是如何工作的:$0 是脚本的路径,$1 是前一个头的引用。
按照惯例,我一直在将我的裸存储库克隆到一个名为 .bare
的目录中,这是第一个语句正在检查的目录。第二条语句检查 HEAD 的前一个 ref 是否为 0 字符串。如果您只是使用其他结帐命令(例如 git checkout
),这会捕获并退出,因为在这种情况下,先前的 HEAD 不是 0 的字符串,因为它指向提交。但是,似乎是因为我每次 运行 git worktree add
都会创建一个新的 HEAD,它将之前的 HEAD ref 设置为该字符串的 0,这使我可以断言该条件。
这确实适用于我的用例,所以我不确定是否有更好的方法。如果有人有更好的建议,请告诉我。
P.S。我可以在我的 post-checkout
脚本中简单地使用 pwd
来获取新分支的目录,这对于我想在钩子中 运行 的命令很有用。