[英]Understanding Git Hook - post-receive hook
我编写了简单的 shell 脚本来抛出“成功和失败消息”,并将它放在 .git/hooks/ 下,并具有所有适当的权限。 我想将此脚本称为后接收。 但是脚本不起作用,运行脚本很简单,但是作为接收后钩子它不起作用。
他们的东西被遗漏了还是我错误地理解了接收后挂钩。 有人可以解释客户端和服务器端挂钩以及如何执行它们。
我已经搜索过了,但无法理解。
要启用post-receive
hook 脚本,请将一个文件放在 .git 目录的 hooks 子目录中,该文件同名(没有任何扩展名)并使其可执行:
touch GIT_PATH/hooks/post-receive
chmod u+x GIT_PATH/hooks/post-receive
有关更多信息,请查看此文档: https : //git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
检查这个例子(一个简单的部署) GIT_PATH/hooks/post-receive
:
#!/bin/bash
TARGET="/home/webuser/deploy-folder"
GIT_DIR="/home/webuser/www.git"
BRANCH="master"
while read oldrev newrev ref
do
# only checking out the master (or whatever branch you would like to deploy)
if [[ $ref = refs/heads/$BRANCH ]];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done
来源: https : //gist.github.com/noelboss/3fe13927025b89757f8fb12e9066f2fa#file-
它需要被称为post-receive
(例如没有扩展名,没有post-receive.sh
)。
如果它被放置(就像 OP 所做的那样)在 .git/hooks 文件夹中,并使其可执行,那么当你推送到那个 repo 时它会被调用(因为它是一个服务器钩子)。
如果你将它安装在你自己的本地仓库上,它就不会被调用(除非你以某种方式推送到你自己的仓库,这似乎不太可能)。
对于像 GitHub 这样的远程 Git 托管服务器,您需要将该钩子实现为webhook ( GitHub 推送事件的侦听器)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.