git pull后更改项目中所有文件的用户和组

git pull后更改项目中所有文件的用户和组,git,hook,Git,Hook,如果执行git pull或git checkout 因此,我创建了具有以下内容的文件.git/hooks/post merge: #!/bin/sh chown -R mycompany:www /srv/www/vhosts/mycompany exec git-update-server-info 该文件具有执行权限 但是它不起作用,在调用了git pull之后没有任何变化。首先要检查的是:你的钩子是可执行的吗? 作为: 运行chmod+x post merge使其可执行,然后将其放入

如果执行
git pull
git checkout

因此,我创建了具有以下内容的文件
.git/hooks/post merge

#!/bin/sh

chown -R mycompany:www /srv/www/vhosts/mycompany

exec git-update-server-info
该文件具有执行权限


但是它不起作用,在调用了git pull之后没有任何变化。

首先要检查的是:你的钩子是可执行的吗?
作为:

运行
chmod+x post merge
使其可执行,然后将其放入
.git/hooks/

然后至少在其中添加一个echo,以检查它是否被执行

注意,钩子只有在成功合并后才会运行,这意味着如果拉动导致快进合并(头部移动,不需要实际合并),钩子将不会运行


另一种方法是尝试并强制process(Git,作为root)以正确的用户身份运行(先决条件:chown为这些文件设置正确的用户/组)

这是一个类似于gitlab或github中的合并的示例。-显示删除了哪些行,+显示添加了哪些行。好的,我明白了,所以他的示例不起作用。我从我的问题中删除了它。您可以尝试他的示例,只需删除
+
-
-git pull HUB master
行并尝试它。同时更改分支名称。不起作用。为什么我的代码没有被调用?谢谢你的回答。是的,正如我前面所写的,该文件是可执行的,我还添加了echo语句,但没有打印任何内容。因此,你说如果
git pull
返回
已经是最新的
,那么钩子将不会被调用?仅当有新文件时?@如果有新文件要合并,则为黑色。如果pull只在提交(快进合并)之上添加新的提交,那么钩子就不需要运行。但这也是我需要运行钩子的一个用例,因为我的文件所有者和组总是被
root:root
覆盖。难道不可能吗?@Black a
setgid
更实用吗至少小组是正确的。