aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2020-01-16 13:48:37 +0000
committerRichard Earnshaw <rearnsha@arm.com>2020-01-16 13:48:37 +0000
commit545f5fad17ff0decb2a145d2ea513580630858c3 (patch)
tree7fc6db66b3f410332a5f71dd91ccc9c7c3941fb7
parent1c2755a6a6bfff1402520448aae2a4cd4c6085f9 (diff)
downloadgcc-545f5fad17ff0decb2a145d2ea513580630858c3.zip
gcc-545f5fad17ff0decb2a145d2ea513580630858c3.tar.gz
gcc-545f5fad17ff0decb2a145d2ea513580630858c3.tar.bz2
contrib: Check and if needed set user.name and user.email in gcc-git-customization.sh
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.
-rw-r--r--contrib/ChangeLog6
-rwxr-xr-xcontrib/gcc-git-customization.sh65
2 files changed, 61 insertions, 10 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 4bda991..8090dcb 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -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
diff --git a/contrib/gcc-git-customization.sh b/contrib/gcc-git-customization.sh
index 0a6b3e5..b7e4ce3 100755
--- a/contrib/gcc-git-customization.sh
+++ b/contrib/gcc-git-customization.sh
@@ -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 "***********************************************"