【发布时间】:2011-06-09 19:46:26
【问题描述】:
在我工作的一台服务器上,我们必须以 root 身份登录(原因我不会在这里讨论)。我们设置了一个用于 Web 服务器的 git 存储库,但是由于文件是以 root 身份创建的,因此 git 修改的文件具有错误的权限。
我创建了一个非常简单的合并后挂钩,我认为它可以解决问题。
#!/bin/bash
. git-sh-setup
chown -R www-data:www-data $GIT_DIR
我将其放入具有执行权限的.git/hooks/post-merge,但该文件似乎从未运行。这是我第一次尝试设置钩子,所以可能我遗漏了一些明显的东西。
我注意到的一件事是大多数钩子都有一个.sample 文件,而合并后没有。 (git 版本 1.7.4)
提前致谢!
【问题讨论】:
-
您是否尝试添加
echo或编写tmp文件以确保它没有运行?为什么是post-merge(在 git pull 上)而不是post-receive(在git push上)?如果您不直接在服务器上执行git pull,则该特定挂钩(post-merge)将不会运行。. git-sh-setup行应该做什么? -
我确实尝试过编写一个临时文件。它似乎没有被执行。我确实直接在服务器上拉。我的理解是 git-sh-setup 准备了必要的环境变量。
-
您可以发布您在拉取时使用的实际命令(并期望脚本运行)吗?
-
不是拉的时候,而是合并的时候。即
git merge origin/feature-branch。理想情况下,我还希望这个钩子与git reset一起运行。真的,任何时候 git 触及这个目录中的任何文件,我都想运行钩子。 -
嘿,我知道这是一个旧线程,但你有没有想过?我希望将
chgrp -R group_name $GIT_DIR添加为文件post-merge。在下面没有看到任何好的答案...:q
标签: git permissions merge githooks