diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2013-10-19 09:41:24 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-10-22 10:49:43 -0700 |
commit | c8556c6213cf6dca63f29f98ad9d074f6c5f8233 (patch) | |
tree | a8cfbe3faac1bf61fba78f1cfb07cf741d1559ad /t | |
parent | 625c3304e200f9bdc05626be1397311faa4962ba (diff) | |
download | git-c8556c6213cf6dca63f29f98ad9d074f6c5f8233.tar.gz git-c8556c6213cf6dca63f29f98ad9d074f6c5f8233.tar.xz |
Fix calling parse_pathspec with no paths nor PATHSPEC_PREFER_* flags
When parse_pathspec() is called with no paths, the behavior could be
either return no paths, or return one path that is cwd. Some commands
do the former, some the latter. parse_pathspec() itself does not make
either the default and requires the caller to specify either flag if
it may run into this situation.
I've grep'd through all parse_pathspec() call sites. Some pass
neither, but those are guaranteed never pass empty path to
parse_pathspec(). There are two call sites that may pass empty path
and are fixed with this patch.
[jc: added a test from Antoine's bug report]
Reported-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t4208-log-magic-pathspec.sh | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/t/t4208-log-magic-pathspec.sh b/t/t4208-log-magic-pathspec.sh index 72300b5f2..d8f23f488 100755 --- a/t/t4208-log-magic-pathspec.sh +++ b/t/t4208-log-magic-pathspec.sh @@ -46,4 +46,19 @@ test_expect_success 'git log HEAD -- :/' ' test_cmp expected actual ' +test_expect_success 'command line pathspec parsing for "git log"' ' + git reset --hard && + >a && + git add a && + git commit -m "add an empty a" --allow-empty && + echo 1 >a && + git commit -a -m "update a to 1" && + git checkout HEAD^ && + echo 2 >a && + git commit -a -m "update a to 2" && + test_must_fail git merge master && + git add a && + git log --merge -- a +' + test_done |