是否可以动态设置用户 .gitconfig (对于 git config --global )?

是否可以动态设置用户 .gitconfig (对于 git config --global )?

我遇到问题,我们以自己的用户身份登录系统约翰多然后必须做一个sudo su - root能够做行政任务的人。我们在 git 存储库中拥有系统配置文件(这使一切变得更好)。但现在我丢失了用户的设置(约翰多/home/johndoe/.gitconfig文件。我尝试设置$GIT_CONFIG有效的变量,但这仅用于设置存储库配置,而不是全局配置,因此对我来说重要的变量不会被设置:

$ sudo su - root
Hello johndoe. Switching your .gitconfig to /home/johndoe/.gitconfig
# git config --get user.name
John Doe
# git config --get user.email
[email protected]
# git config --global --get user.name
# git config --global --get user.email
#

这是我尝试过的技巧:

$ cat .bashrc
--- snip ---

# load git config of user
LOGINUSER=$(who am i|awk '{print $1}')
if [ "$LOGINUSER" != "root" ]; then
    GITCFGFILE="/home/$LOGINUSER/.gitconfig"
    if [ -f $GITCFGFILE ]; then
        echo "Hello $LOGINUSER. Switching your .gitconfig to $GITCFGFILE"
        export GIT_CONFIG=$GITCFGFILE
    fi
fi

有没有办法设置全局git配置的路径?

答案1

回答我的问题:不

这是我最终得到的解决方案:我添加了一个/etc/profile.d/gitsetup.sh包含以下内容的文件:

[ -z "$PS1" ] && return
[ -z "$BASH_VERSION" -o -z "$PS1" ] && return
CFGFILE="/home/$(who am i|awk '{ print $1 }')/.gitconfig"
[ $USER == "root" -a -f "$CFGFILE" -a -n "$CFGFILE" ] && cat $CFGFILE > $HOME/.gitconfig

它在第一行和第二行测试交互式 shell,在第三行读取源 .gitconfig 路径,然后替换根配置文件(如果源文件存在)。

答案2

我经历了所有同样的困难,发现存储的用户信息存在同样的问题,$HOME/.gitconfig因为我们的 git 版本没有对应的环境变量。

我遇到了一种可能会影响你的情况——.gitconfig当第二个用户参与时,文件被破坏了——而我自己的解决方案对我(一个新手 git 用户)来说是有问题的,可以在这里找到它:

带有包装脚本的 git 动态用户配置?

相关内容