Keep Porcelainish from failing by broken ident after making changes.

"empty ident not allowed" error makes commit-tree fail, so we
are already safer in that we would not end up with commit
objects that have bogus names on the author or committer fields.
However, before commit-tree is called there are already changes
made to the index file and the working tree.  The operation can
be resumed after fixing the environment problem, but when this
triggers to a newcomer with unusable gecos, the first question
becomes "what did I lose and how would I recover".

This patch modifies some Porcelainish commands to verify
GIT_COMMITTER_IDENT as soon as we know we are going to make some
commits before doing much damage to prevent confusion.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-02-18 20:51:26 -08:00
Родитель 749be728d4
Коммит e3b59a44f6
4 изменённых файлов: 13 добавлений и 1 удалений

Просмотреть файл

@ -1,11 +1,13 @@
#!/bin/sh #!/bin/sh
# #
# # Copyright (c) 2005, 2006 Junio C Hamano
USAGE='[--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox> USAGE='[--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox>
or, when resuming [--skip | --resolved]' or, when resuming [--skip | --resolved]'
. git-sh-setup . git-sh-setup
git var GIT_COMMITTER_IDENT >/dev/null || exit
stop_here () { stop_here () {
echo "$1" >"$dotest/next" echo "$1" >"$dotest/next"
exit 1 exit 1

Просмотреть файл

@ -21,6 +21,8 @@
USAGE='[-u] [-k] [-q] [-m] (-c .dotest/<num> | mbox) [signoff]' USAGE='[-u] [-k] [-q] [-m] (-c .dotest/<num> | mbox) [signoff]'
. git-sh-setup . git-sh-setup
git var GIT_COMMITTER_IDENT >/dev/null || exit
keep_subject= query_apply= continue= utf8= resume=t keep_subject= query_apply= continue= utf8= resume=t
while case "$#" in 0) break ;; esac while case "$#" in 0) break ;; esac
do do

Просмотреть файл

@ -142,6 +142,8 @@ case "$#,$common,$no_commit" in
1,*,) 1,*,)
# We are not doing octopus, not fast forward, and have only # We are not doing octopus, not fast forward, and have only
# one common. See if it is really trivial. # one common. See if it is really trivial.
git var GIT_COMMITTER_IDENT >/dev/null || exit
echo "Trying really trivial in-index merge..." echo "Trying really trivial in-index merge..."
git-update-index --refresh 2>/dev/null git-update-index --refresh 2>/dev/null
if git-read-tree --trivial -m -u $common $head "$1" && if git-read-tree --trivial -m -u $common $head "$1" &&
@ -179,6 +181,9 @@ case "$#,$common,$no_commit" in
;; ;;
esac esac
# We are going to make a new commit.
git var GIT_COMMITTER_IDENT >/dev/null || exit
case "$use_strategies" in case "$use_strategies" in
'') '')
case "$#" in case "$#" in

Просмотреть файл

@ -50,6 +50,9 @@ case "$common" in
;; ;;
esac esac
# We are going to make a new commit.
git var GIT_COMMITTER_IDENT >/dev/null || exit
# Find an optimum merge base if there are more than one candidates. # Find an optimum merge base if there are more than one candidates.
LF=' LF='
' '