0

需要一点帮助编写 git pull 脚本。

我们有一个内部网服务器,我们正在尝试编写一个 git pull 脚本,但我遇到了权限问题。

error: cannot open .git/FETCH_HEAD: Permission denied

我们在服务器上设置了一个用户帐户,将项目克隆到该帐户,chmod 775 -R 目录树,并设置了 ssh 密钥,因此没有密码提示。

脚本如下所示:

#! /bin/bash
sudo /bin/su - gitrepouser
cd /some/directory/for/git && git pull

当我以另一个用户身份运行脚本时,它运行 sudo 命令,并在键入 exit 后停止,我收到错误消息。

我们的批处理将每隔 10 分钟调用一次此脚本,从 BitBucket 中提取任何生产更改。

想法?

4

2 回答 2

1

您可能需要使用户成为文件夹的所有者

chown gitrepouser -Rf /some/directory/for/git
于 2013-05-06T16:56:29.093 回答
1

问题是su启动它自己的shell;第二个命令不是在那个 shell 中执行的,而是在原来的那个 shell 中执行的。您可以通过运行以下脚本来证明这一点:

#!/bin/bash
su
whoami

除非你在运行它时已经是 root,否则它不会输出root.

解决方案是使用su's-c开关:

sudo /bin/su -c "cd /some/directory/for/git && git pull" - gitrepouser
于 2013-05-06T17:02:16.147 回答