首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有可以拉的git钩子?

有没有可以拉的git钩子?
EN

Stack Overflow用户
提问于 2010-11-15 22:41:50
回答 2查看 82.7K关注 0票数 172

每次运行git pull时,我都需要对项目执行一些操作(准备gettext *.mo消息文件)。有没有合适的git钩子,我可以用来做这个用途?

EN

回答 2

Stack Overflow用户

发布于 2018-02-09 23:59:39

post-merge -有关如何使用的更多详细信息,请参阅https://git-scm.com/docs/githooks#_post_merge

票数 19
EN

Stack Overflow用户

发布于 2022-02-15 08:16:19

这种方法对我很有效。

首先,向/path/to/your_project/.git/hooks/添加一个名为post-merge的文件

cd /path/to/your_project/.git/hooks/
touch post-merge

然后,将它的所有权更改为与文件夹相同(这与nginxphp-fpm runner相同),在我的示例中,我使用www:www

sudo chown www:www post-merge

然后将它的文件模式改为775(然后它就可以执行了)

sudo chmod 775 post-merge

然后将下面的代码片段放到post-merge中。要理解该代码片段,请参阅here(实际上这就是我)。

#!/bin/sh

# default owner user
OWNER="www:www"

# changed file permission
PERMISSION="664"

# web repository directory
REPO_DIR="/www/wwwroot/your_project/"

# remote repository
REMOTE_REPO="origin"

# public branch of the remote repository
REMOTE_REPO_BRANCH="master"

cd $REPO_DIR || exit
unset GIT_DIR
files="$(git diff-tree -r --name-only --no-commit-id HEAD@{1} HEAD)"

for file in $files
do
  sudo chown $OWNER $file
  sudo chmod $PERMISSION $file
done

exec git-update-server-info

一切都完成了,现在,回到your_project文件夹

cd /path/to/your_project/

运行your_project文件夹下的git pull,记住您必须以超级用户或sudo身份运行(我记得sudo)

sudo git pull

现在检查从远程存储库中拉出的新文件,查看其所有权是否已更改为www:www(如果如预期,则新拉出的文件的所有权应更改为www:www)。

这种方法比sudo chown -R www:www /www/wwwroot/your_project/好得多,因为它只改变了新文件的所有权,而不是所有文件的所有权!假设我刚拉了两个新文件,如果你改变整个文件夹的所有权,它会花费更多的时间和服务器资源(cpu使用率,内存使用率...),这是完全不必要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4185400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档