diff options
-rw-r--r-- | builtin/stash.c | 8 | ||||
-rwxr-xr-x | t/t3905-stash-include-untracked.sh | 15 |
2 files changed, 21 insertions, 2 deletions
diff --git a/builtin/stash.c b/builtin/stash.c index 8922a1240c..82e4829d44 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -900,10 +900,14 @@ static int show_stash(int argc, const char **argv, const char *prefix) diff_tree_oid(&info.b_commit, &info.w_commit, "", &rev.diffopt); break; case UNTRACKED_ONLY: - diff_root_tree_oid(&info.u_tree, "", &rev.diffopt); + if (info.has_u) + diff_root_tree_oid(&info.u_tree, "", &rev.diffopt); break; case UNTRACKED_INCLUDE: - diff_include_untracked(&info, &rev.diffopt); + if (info.has_u) + diff_include_untracked(&info, &rev.diffopt); + else + diff_tree_oid(&info.b_commit, &info.w_commit, "", &rev.diffopt); break; } log_tree_diff_flush(&rev); diff --git a/t/t3905-stash-include-untracked.sh b/t/t3905-stash-include-untracked.sh index 2e6796725b..1c9765928d 100755 --- a/t/t3905-stash-include-untracked.sh +++ b/t/t3905-stash-include-untracked.sh @@ -405,4 +405,19 @@ test_expect_success 'stash show --include-untracked errors on duplicate files' ' test_i18ngrep "worktree and untracked commit have duplicate entries: tracked" err ' +test_expect_success 'stash show --{include,only}-untracked on stashes without untracked entries' ' + git reset --hard && + git clean -xf && + >tracked && + git add tracked && + git stash && + + git stash show >expect && + git stash show --include-untracked >actual && + test_cmp expect actual && + + git stash show --only-untracked >actual && + test_must_be_empty actual +' + test_done |