繁体   English   中英

使用 git 合并后修复权限

[英]Fix permissions with git post-merge

在我工作的一台服务器上,我们必须以 root 身份登录(原因我不会进入这里)。 我们设置了一个 git 存储库,用于 web 服务器,但由于文件是作为 root 创建的,因此由 git 修改的文件具有错误的权限。

我创建了一个非常简单的合并后挂钩,我认为它可以解决问题。

#!/bin/bash
. git-sh-setup
chown -R www-data:www-data $GIT_DIR

我将它放入具有执行权限.git/hooks/post-merge中,但该文件似乎永远不会运行。 这是我第一次尝试设置挂钩,所以也许我遗漏了一些明显的东西。

我确实注意到的一件事是大多数钩子都有一个.sample文件,而 post-merge 没有。 (git 版本 1.7.4)

提前致谢!

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

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

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

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

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

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

关联:

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM