Skip to content

Commit

Permalink
Merge branch 'jk/blame-fake-commit-label'
Browse files Browse the repository at this point in the history
The output given by "git blame" that attributes a line to contents
taken from the file specified by the "--contents" option shows it
differently from a line attributed to the working tree file.

* jk/blame-fake-commit-label:
  blame: use different author name for fake commit generated by --contents
  • Loading branch information
gitster committed May 2, 2023
2 parents f357d46 + 603d0fd commit cf85f4b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
8 changes: 3 additions & 5 deletions Documentation/blame-options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,9 @@ include::line-range-format.txt[]
manual page.

--contents <file>::
Pretend the file being annotated has a commit with the
contents from the named file and a parent of <rev>,
defaulting to HEAD when no <rev> is specified. You may
specify '-' to make the command read from the standard
input for the file contents.
Annotate using the contents from the named file, starting from <rev>
if it is specified, and HEAD otherwise. You may specify '-' to make
the command read from the standard input for the file contents.

--date <format>::
Specifies the format used to output dates. If --date is not
Expand Down
8 changes: 6 additions & 2 deletions blame.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,12 @@ static struct commit *fake_working_tree_commit(struct repository *r,

origin = make_origin(commit, path);

ident = fmt_ident("Not Committed Yet", "not.committed.yet",
WANT_BLANK_IDENT, NULL, 0);
if (contents_from)
ident = fmt_ident("External file (--contents)", "external.file",
WANT_BLANK_IDENT, NULL, 0);
else
ident = fmt_ident("Not Committed Yet", "not.committed.yet",
WANT_BLANK_IDENT, NULL, 0);
strbuf_addstr(&msg, "tree 0000000000000000000000000000000000000000\n");
for (parent = commit->parents; parent; parent = parent->next)
strbuf_addf(&msg, "parent %s\n",
Expand Down
11 changes: 9 additions & 2 deletions t/annotate-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,21 @@ test_expect_success 'blame 1 author' '
check_count A 2
'

test_expect_success 'blame working copy' '
test_when_finished "git restore file" &&
echo "1A quick brown fox jumps over the" >file &&
echo "another lazy dog" >>file &&
check_count A 1 "Not Committed Yet" 1
'

test_expect_success 'blame with --contents' '
check_count --contents=file A 2
'

test_expect_success 'blame with --contents changed' '
echo "1A quick brown fox jumps over the" >contents &&
echo "another lazy dog" >>contents &&
check_count --contents=contents A 1 "Not Committed Yet" 1
check_count --contents=contents A 1 "External file (--contents)" 1
'

test_expect_success 'blame in a bare repo without starting commit' '
Expand Down Expand Up @@ -109,7 +116,7 @@ test_expect_success 'blame 2 authors' '
'

test_expect_success 'blame with --contents and revision' '
check_count -h testTag --contents=file A 2 "Not Committed Yet" 2
check_count -h testTag --contents=file A 2 "External file (--contents)" 2
'

test_expect_success 'setup B1 lines (branch1)' '
Expand Down

0 comments on commit cf85f4b

Please sign in to comment.