在预提交挂钩中检索所需的 git 提交消息
Retrieving desired git commit message in pre-commit hook
因此,如果 .git/hooks/pre-commit 存在,那么它将在 运行 紧随其后:
git commit -am "foobar"
是运行。那么如何在预提交中访问所需的 git 提交消息?
我做了一些调查并将其放入 .git/hooks/pre-commit 并使文件可执行:
#!/usr/bin/env bash
echo "here is pre-commit hook"
env | sort
echo "args:"
echo $@
exit 1;
这是以 "GIT"
为前缀的环境变量
GIT_AUTHOR_DATE=@1558245421 -0700
GIT_AUTHOR_EMAIL=alex@alexs-mac.local
GIT_AUTHOR_NAME=Alexander Mills
GIT_EDITOR=:
GIT_EXEC_PATH=/Library/Developer/CommandLineTools/usr/libexec/git-core
GIT_INDEX_FILE=/Users/alex/codes/interos/notifier-server/.git/index.lock
GIT_PREFIX=
并且脚本似乎没有参数,因为在 echo "args:"
...
之后没有任何记录
那么如何访问预提交挂钩中的所需提交消息?
具体来说,如果提交消息的格式不正确,我希望避免预提交。如果有另一个钩子可以做到这一点,那就可以了很好地回答这个问题。
不是最理想的 git 挂钩情况 - 如果它是一个环境集而不是一个参数就好了(git 不是很 thread-safe)
所以忘记 .git/hooks/pre-commit
而是使用 .git/hooks/commit-msg
,在那里你可能有:
#!/usr/bin/env bash
cat
cat .git/COMMIT_EDITMSG
# the two above lines are the same
那是仍在等待提交的 git 提交消息。
因此,如果 .git/hooks/pre-commit 存在,那么它将在 运行 紧随其后:
git commit -am "foobar"
是运行。那么如何在预提交中访问所需的 git 提交消息?
我做了一些调查并将其放入 .git/hooks/pre-commit 并使文件可执行:
#!/usr/bin/env bash
echo "here is pre-commit hook"
env | sort
echo "args:"
echo $@
exit 1;
这是以 "GIT"
为前缀的环境变量GIT_AUTHOR_DATE=@1558245421 -0700
GIT_AUTHOR_EMAIL=alex@alexs-mac.local
GIT_AUTHOR_NAME=Alexander Mills
GIT_EDITOR=:
GIT_EXEC_PATH=/Library/Developer/CommandLineTools/usr/libexec/git-core
GIT_INDEX_FILE=/Users/alex/codes/interos/notifier-server/.git/index.lock
GIT_PREFIX=
并且脚本似乎没有参数,因为在 echo "args:"
...
那么如何访问预提交挂钩中的所需提交消息?
具体来说,如果提交消息的格式不正确,我希望避免预提交。如果有另一个钩子可以做到这一点,那就可以了很好地回答这个问题。
不是最理想的 git 挂钩情况 - 如果它是一个环境集而不是一个参数就好了(git 不是很 thread-safe)
所以忘记 .git/hooks/pre-commit
而是使用 .git/hooks/commit-msg
,在那里你可能有:
#!/usr/bin/env bash
cat
cat .git/COMMIT_EDITMSG
# the two above lines are the same
那是仍在等待提交的 git 提交消息。