Junio C Hamano <gitster@xxxxxxxxx> writes: > Rather than adding this fallback trap, can't we do it more like > this? > > - At the beginning of "git stash", after parsing the command > line, we know what subcommand of "git stash" we are going to > run. > > - If it is a subcommand that could need the ident (i.e. the ones > that create a stash entry), we check the ident (e.g. make a > call to git_author/committer_info() ourselves) but without > STRICT bit, so that we can probe without dying if we need to > supply a fallback identy. > > - And if we do need it, then setenv() the necessary > environment variables and arrange the next call by anybody > to git_author/committer_info() will get the fallback values > from there. As we currently have no idea when builtin/stash.c becomes ready for 'next', how about doing something like this instead, in order to help end-users without waiting in the meantime? The fix can be picked up and ported when the C rewrite is updated, of course. git-stash.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/git-stash.sh b/git-stash.sh index 94793c1a91..789ce2f41d 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -55,6 +55,20 @@ untracked_files () { git ls-files -o $z $excl_opt -- "$@" } +prepare_fallback_ident () { + if ! git -c user.useconfigonly=yes var GIT_COMMITTER_IDENT >/dev/null 2>&1 + then + GIT_AUTHOR_NAME="git stash" + GIT_AUTHOR_EMAIL=git@stash + GIT_COMMITTER_NAME="git stash" + GIT_COMMITTER_EMAIL=git@stash + export GIT_AUTHOR_NAME + export GIT_AUTHOR_EMAIL + export GIT_COMMITTER_NAME + export GIT_COMMITTER_EMAIL + fi +} + clear_stash () { if test $# != 0 then @@ -67,6 +81,9 @@ clear_stash () { } create_stash () { + + prepare_fallback_ident + stash_msg= untracked= while test $# != 0