使 Git 在进行拉取时使用正确的所有者组名称
Making Git use the correct owner group names when doing a pull
我在我们的生产和登台服务器上设置了 Git,它运行良好,但是在登台服务器上执行 git pull
时,它似乎将组所有者名称设置为我以前的用户在 SSH 下登录,即 root.
有没有办法让它将组名设置为另一个名称,而不必以该特定用户身份登录?
我看到两个解决方案:
- 以进程用户身份执行命令(这是最合理的改变)。就像是
su theprocessuser -s /bin/bash -c 'cd /some/dir && git pull
- 在 "git pull" 之后执行
chown
并将所有内容嵌入部署脚本
以更一般的方式,您应该看看 Ansible、Fabric 或类似的有用工具。更一般地说,您绝对不应该使用 root 用户执行操作任务。
您可以在根目录下添加所需用户的密钥。
由于身份验证是通过 ssh 完成的,因此您不能 "fake" 它是不同的用户。 (假设您没有试图破解系统)。
这就是使用 SSH 的意义所在 - 验证发起操作的人。
参考上面的回答建议执行一个chmod
:
如果您要执行 chmod,如果您设置了模式标志,它也可以作为更改进行跟踪。
git config core.fileMode false
core.fileMode
If false
, the executable bit differences between the index and the
working copy are ignored; useful on broken filesystems like FAT.
True by default.
git ssh
详细了解它的工作原理here
我在我们的生产和登台服务器上设置了 Git,它运行良好,但是在登台服务器上执行 git pull
时,它似乎将组所有者名称设置为我以前的用户在 SSH 下登录,即 root.
有没有办法让它将组名设置为另一个名称,而不必以该特定用户身份登录?
我看到两个解决方案:
- 以进程用户身份执行命令(这是最合理的改变)。就像是
su theprocessuser -s /bin/bash -c 'cd /some/dir && git pull
- 在 "git pull" 之后执行
chown
并将所有内容嵌入部署脚本
以更一般的方式,您应该看看 Ansible、Fabric 或类似的有用工具。更一般地说,您绝对不应该使用 root 用户执行操作任务。
您可以在根目录下添加所需用户的密钥。
由于身份验证是通过 ssh 完成的,因此您不能 "fake" 它是不同的用户。 (假设您没有试图破解系统)。
这就是使用 SSH 的意义所在 - 验证发起操作的人。
参考上面的回答建议执行一个chmod
:
如果您要执行 chmod,如果您设置了模式标志,它也可以作为更改进行跟踪。
git config core.fileMode false
core.fileMode
Iffalse
, the executable bit differences between the index and the working copy are ignored; useful on broken filesystems like FAT.
True by default.
git ssh
详细了解它的工作原理here