用户运行git hook的是什么?

atp*_*atp 27 git hook

我的服务器上有一个更新后的挂钩,这样当我

git push
Run Code Online (Sandbox Code Playgroud)

它会对实时网络目录进行拉动.但是,虽然推送总是成功,但更新后的挂钩有时会失败.

钩子非常简单:

#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
cd /var/www
env -i git pull
Run Code Online (Sandbox Code Playgroud)

我正在推动来自各个地方的更新,但有时我必须在服务器上以root用户身份登录,并且manuall会做一个

env -i git pull
Run Code Online (Sandbox Code Playgroud)

我只需要做20%的时间.任何想法为什么会随机失败?另外,如何记录错误消息,因为它可能作为无法写入文件系统的人运行?

Cas*_*bel 20

钩子在用户进行推动时运行.如果您有某种预先设置的设置,可能是用户喜欢gitgitosis,或者可能是您.只需看看如何配置遥控器.(git remote show <remote-name>或者只是检查.git/config,如果你不知道的话)大概你是通过SSH推送的,并且URL中有一个用户名@ hostname.

PS它很快就能证明这一点 - 只需在本地克隆一个repo,用一个echo $USER或类似的东西抛出一个更新后的钩子,然后尝试像你自己或另一个用户一样(直接或通过ssh).