通过 SSH 以 root 身份推送时更正 Git 用户

Correct Git user when pushing as root via SSH

我们有多个用户通过 SSH 以 root 身份使用服务器。当前 'problem' 在将更改推送到 GitLab 时未看到正确的用户。

除了在提交时使用自己用户的 'sudo' 之外,是否有解决方案?

我为 git 命令使用了包装脚本:Vonc/gitw

alias git='gitshellenv=$- ~/gits/gitw.sh'

该脚本将检查命令是否在以下交互式会话中调用:

if [[ ${gitshellenv} != *i* ]]; then
    commmand git  "$@"
    exit $?
fi

这意味着在脚本中执行的任何 git 命令仍将像往常一样调用 git,但在 interactive [=42= 中执行的任何命令] 手动会继续。

通过“继续”,我的意思是包装器随后会检查是否设置了 GIT_AUTHOR_NAME
如果不是,它会调用一个小程序,让用户输入他们的 name/email,并在调用 git 命令之前相应地设置 GIT_AUTHOR_NAME/EMAIL

它还会在/tmp/file中记录与当前用户会话关联的name/email,以便不会在当前会话期间再次询问。
它还记录了 SSH_CLIENT IP 地址:如果用户始终来自该 IP,则在他们的下一次会话中,他们的名字可以重复使用。