9

在我工作的一台服务器上,我们必须以 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)

提前致谢!

4

4 回答 4

2

您可能已经知道,但您可能想检查合并后挂钩中的 EOL 字符 (CR)。这可能解释了为什么你的钩子没有执行(正如另一个问题git-hook-post-merge-error-cannot-run中提到的那样。

如果这不是解决方案,您也可以为您的问题寻找另一种方法。当存储库中的文件在服务器上发生更改时,您可以执行一项任务来执行对目录的所有者更改。Cron 任务本身不会根据文件系统更改做出反应,但您可以尝试使用诸如inotify之类的东西来对服务器 git 存储库中的任何更改做出反应。

我希望这两条信息可以解决您的问题,或者至少让您更接近。祝你好运。

于 2011-06-27T01:27:27.340 回答
0

确保将脚本添加到超级用户组所有权。

于 2011-06-10T06:27:51.673 回答
-1

也许您正在寻找post-receive 钩子,如果您希望执行远程存储库的脚本被推送到。

于 2011-06-10T06:34:18.540 回答
-1

看看“git 成就”的工作方式。将 git 包装在脚本中并在任何命令中执行您需要的操作会更容易。钩子更多地是为远程仓库而不是本地设计的。合并是您在本地执行的操作,因此您不会从挂钩机制中找到太多帮助。

关联:

http://benjamin-meyer.blogspot.com/2010/03/git-achievements.html

希望这可以帮助

于 2011-06-27T01:57:32.370 回答