Merge branch 'sd/stash-wo-user-name'

A properly configured username/email is required under
user.useConfigOnly in order to create commits; now "git stash"
(even though it creates commit objects to represent stash entries)
command is exempt from the requirement.

* sd/stash-wo-user-name:
  stash: tolerate missing user identity
This commit is contained in:
Junio C Hamano 2019-01-04 13:33:34 -08:00
commit 1328d29943
2 changed files with 45 additions and 0 deletions

View File

@ -55,6 +55,20 @@ untracked_files () {
git ls-files -o $z $excl_opt -- "$@" 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 () { clear_stash () {
if test $# != 0 if test $# != 0
then then
@ -67,6 +81,9 @@ clear_stash () {
} }
create_stash () { create_stash () {
prepare_fallback_ident
stash_msg= stash_msg=
untracked= untracked=
while test $# != 0 while test $# != 0

View File

@ -1096,4 +1096,32 @@ test_expect_success 'stash -- <subdir> works with binary files' '
test_path_is_file subdir/untracked test_path_is_file subdir/untracked
' '
test_expect_success 'stash works when user.name and user.email are not set' '
git reset &&
>1 &&
git add 1 &&
echo "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" >expect &&
git stash &&
git show -s --format="%an <%ae>" refs/stash >actual &&
test_cmp expect actual &&
>2 &&
git add 2 &&
test_config user.useconfigonly true &&
test_config stash.usebuiltin true &&
(
sane_unset GIT_AUTHOR_NAME &&
sane_unset GIT_AUTHOR_EMAIL &&
sane_unset GIT_COMMITTER_NAME &&
sane_unset GIT_COMMITTER_EMAIL &&
test_unconfig user.email &&
test_unconfig user.name &&
test_must_fail git commit -m "should fail" &&
echo "git stash <git@stash>" >expect &&
>2 &&
git stash &&
git show -s --format="%an <%ae>" refs/stash >actual &&
test_cmp expect actual
)
'
test_done test_done