]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
contrib: Check and if needed set user.name and user.email in gcc-git-customization.sh
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 16 Jan 2020 13:48:37 +0000 (13:48 +0000)
committerRichard Earnshaw <rearnsha@arm.com>
Thu, 16 Jan 2020 13:48:37 +0000 (13:48 +0000)
As discussed on IRC, this adds a couple more checks in the
customization setup for git.  If the variables user.name and
user.email are not set anywhere in the git config hierarchy, we set
some local values.  We always ask about the values we detect and if
the user gives an answer that is new, we save that in the local
config: this gives the opportunity to use different values to those
configured for the global space.

Also cleaned up a couple of minor niggles, such as using $(cmd) rather
than `cmd` for subshells and some quoting issues when using eval.

* gcc-git-customization.sh: Check that user.name and user.email
are set.  Use $(cmd) instead of `cmd`.  Fix variable quoting when
using eval.

contrib/ChangeLog
contrib/gcc-git-customization.sh

index 4bda991c7c3bcd4e34f6e27e6a81fe23eeaaff6c..8090dcbb4e702f116bd970b27feda54d689d1461 100644 (file)
@@ -1,3 +1,9 @@
+2020-01-16  Richard Earnshaw  <rearnsha@arm.com>
+
+       * gcc-git-customization.sh: Check that user.name and user.email
+       are set.  Use $(cmd) instead of `cmd`.  Fix variable quoting when
+       using eval.
+
 2020-01-16  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc-git-customization.sh: Verify the id to be printed is ancestor of
index 0a6b3e528886a0a57530134ecee0dcdf5465ff9a..b7e4ce308062251a4c41484f91b0e04d6203fe9e 100755 (executable)
@@ -11,9 +11,9 @@ ask () {
     read answer
     if [ "x$answer" = "x" ]
     then
-       eval $var=$default
+       eval $var=\"$default\"
     else
-       eval $var=$answer
+       eval $var=\"$answer\"
     fi
 }
 
@@ -30,7 +30,52 @@ git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream)
 # *.md    diff=md
 git config diff.md.xfuncname '^\(define.*$'
 
-upstream=`git config --get "gcc-config.upstream"`
+set_user=$(git config --get "user.name")
+set_email=$(git config --get "user.email")
+
+if [ "x$set_user" = "x" ]
+then
+    # Try to guess the user's name by looking it up in the password file
+    new_user=$(getent passwd $(whoami) | awk -F: '{ print $5 }')
+    if [ "x$new_user" = "x" ]
+    then
+       new_user="(no default)"
+    fi
+else
+    new_user=$set_user
+fi
+ask "Your name" "${new_user}" new_user
+if [ "x$new_user" = "x(no default)" ]
+then
+    echo "Cannot continue, git needs to record your name against commits"
+    exit 1
+fi
+
+if [ "x$set_email" = "x" ]
+then
+    new_email="(no_default)"
+else
+    new_email=$set_email
+fi
+
+ask "Your email address (for git commits)" "${new_email}" new_email
+if [ "x$new_email" = "x(no default)" ]
+then
+    echo "Cannot continue, git needs to record your email address against commits"
+    exit 1
+fi
+
+if [ "x$set_user" != "x$new_user" ]
+then
+    git config "user.name" "$new_user"
+fi
+
+if [ "x$set_email" != "x$new_email" ]
+then
+    git config "user.email" "$new_email"
+fi
+
+upstream=$(git config --get "gcc-config.upstream")
 if [ "x$upstream" = "x" ]
 then
     upstream="origin"
@@ -38,27 +83,27 @@ fi
 ask "Local name for upstream repository" "origin" upstream
 git config "gcc-config.upstream" "$upstream"
 
-remote_id=`git config --get "gcc-config.user"`
+remote_id=$(git config --get "gcc-config.user")
 if [ "x$remote_id" = "x" ]
 then
     # See if the url specifies the remote user name.
-    url=`git config --get "remote.$upstream.url"`
+    url=$(git config --get "remote.$upstream.url")
     if [ "x$url" = "x" ]
     then
        # This is a pure guess, but for many people it might be OK.
-       remote_id=`whoami`
+       remote_id=$(whoami)
     else
-       remote_id=`echo $url | sed -r "s|^.*ssh://(.+)@gcc.gnu.org.*$|\1|"`
+       remote_id=$(echo $url | sed -r "s|^.*ssh://(.+)@gcc.gnu.org.*$|\1|")
        if [ x$remote_id = x$url ]
        then
-           remote_id=`whoami`
+           remote_id=$(whoami)
        fi
     fi
 fi
 ask "Account name on gcc.gnu.org (for your personal branches area)" $remote_id remote_id
 git config "gcc-config.user" "$remote_id"
 
-old_pfx=`git config --get "gcc-config.userpfx"`
+old_pfx=$(git config --get "gcc-config.userpfx")
 if [ "x$old_pfx" = "x" ]
 then
     old_pfx="me"
@@ -72,7 +117,7 @@ echo "Setting up tracking for personal namespace $remote_id in remotes/$upstream
 git config --replace-all "remote.${upstream}.fetch" "+refs/users/${remote_id}/heads/*:refs/remotes/${upstream}/${new_pfx}/*" ":refs/remotes/${upstream}/${old_pfx}/"
 git config --replace-all "remote.${upstream}.fetch" "+refs/users/${remote_id}/tags/*:refs/tags/${new_pfx}/*" ":refs/tags/${old_pfx}/"
 
-push_rule=`git config --get "remote.${upstream}.push"`
+push_rule=$(git config --get "remote.${upstream}.push")
 if [ "x$push_rule" != "x" ]
 then
     echo "***********************************************"