diff options
author | Edmundo Carmona Antoranz <eantoranz@gmail.com> | 2015-11-17 19:20:09 -0600 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2015-11-20 08:02:06 -0500 |
commit | e0460ae8660f3205c4237d5c64e995d4081fdbf7 (patch) | |
tree | f9d8af32d5ce8f1cab5311f32935f54fbe46cf0b | |
parent | 0c83680e9c047170614fb08ef222ea4f460e514d (diff) | |
download | git-ec/annotate-deleted.tar.gz |
annotate: skip checking working tree if a revision is providedec/annotate-deleted
If a file has been deleted/renamed, annotate refuses to work
because the file does not exist on the working tree anymore
(even if the path provided does match a blob on said revision).
Signed-off-by: Edmundo Carmona Antoranz <eantoranz@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
-rw-r--r-- | builtin/blame.c | 5 | ||||
-rw-r--r-- | t/annotate-tests.sh | 20 |
2 files changed, 23 insertions, 2 deletions
diff --git a/builtin/blame.c b/builtin/blame.c index 83612f5b64..856971ad1c 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -2683,12 +2683,13 @@ parse_done: argv[argc - 1] = "--"; setup_work_tree(); - if (!file_exists(path)) - die_errno("cannot stat path '%s'", path); } revs.disable_stdin = 1; setup_revisions(argc, argv, &revs, NULL); + if (!revs.pending.nr && !file_exists(path)) + die_errno("cannot stat path '%s'", path); + memset(&sb, 0, sizeof(sb)); sb.revs = &revs; diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh index b1673b3e8f..c99ec416c5 100644 --- a/t/annotate-tests.sh +++ b/t/annotate-tests.sh @@ -567,3 +567,23 @@ test_expect_success 'blame -L X,-N (non-numeric N)' ' test_expect_success 'blame -L ,^/RE/' ' test_must_fail $PROG -L1,^/99/ file ' + +test_expect_success 'annotate deleted file' ' + echo hello world > hello_world.txt && + git add hello_world.txt && + git commit -m "step 1" && + git rm hello_world.txt && + git commit -m "step 2" && + git annotate hello_world.txt HEAD~1 && + test_must_fail git annotate hello_world.txt +' + +test_expect_success 'annotate moved file' ' + echo hello world > hello_world.txt && + git add hello_world.txt && + git commit -m "step 1" && + git mv hello_world.txt not_there_anymore.txt && + git commit -m "step 2" && + git annotate hello_world.txt HEAD~1 && + test_must_fail git annotate hello_world.txt +' |