pretty: implement 'reference' format
The standard format for referencing other commits within some projects
(such as git.git) is the reference format. This is described in
Documentation/SubmittingPatches as
If you want to reference a previous commit in the history of a stable
branch, use the format "abbreviated hash (subject, date)", like this:
....
Commit f86a374
(pack-bitmap.c: fix a memleak, 2015-03-30)
noticed that ...
....
Since this format is so commonly used, standardize it as a pretty
format.
The tests that are implemented essentially show that the format-string
does not change in response to various log options. This is useful
because, for future developers, it shows that we've considered the
limitations of the "canned format-string" approach and we are fine with
them.
Based-on-a-patch-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
parent
618a855083
commit
1f0fc1db85
|
@ -63,6 +63,17 @@ This is designed to be as compact as possible.
|
|||
|
||||
<full commit message>
|
||||
|
||||
* 'reference'
|
||||
|
||||
<abbrev hash> (<title line>, <short author date>)
|
||||
+
|
||||
This format is used to refer to another commit in a commit message and
|
||||
is the same as `--pretty='format:%C(auto)%h (%s, %ad)'`. By default,
|
||||
the date is formatted with `--date=short` unless another `--date` option
|
||||
is explicitly specified. As with any `format:` with format
|
||||
placeholders, its output is not affected by other options like
|
||||
`--decorate` and `--walk-reflogs`.
|
||||
|
||||
* 'email'
|
||||
|
||||
From <hash> <date>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
Pretty-print the contents of the commit logs in a given format,
|
||||
where '<format>' can be one of 'oneline', 'short', 'medium',
|
||||
'full', 'fuller', 'email', 'raw', 'format:<string>'
|
||||
'full', 'fuller', 'reference', 'email', 'raw', 'format:<string>'
|
||||
and 'tformat:<string>'. When '<format>' is none of the above,
|
||||
and has '%placeholder' in it, it acts as if
|
||||
'--pretty=tformat:<format>' were given.
|
||||
|
|
|
@ -269,7 +269,7 @@ list.
|
|||
exclude (that is, '{caret}commit', 'commit1..commit2',
|
||||
and 'commit1\...commit2' notations cannot be used).
|
||||
+
|
||||
With `--pretty` format other than `oneline` (for obvious reasons),
|
||||
With `--pretty` format other than `oneline` and `reference` (for obvious reasons),
|
||||
this causes the output to have two extra lines of information
|
||||
taken from the reflog. The reflog designator in the output may be shown
|
||||
as `ref@{Nth}` (where `Nth` is the reverse-chronological index in the
|
||||
|
@ -293,6 +293,8 @@ Under `--pretty=oneline`, the commit message is
|
|||
prefixed with this information on the same line.
|
||||
This option cannot be combined with `--reverse`.
|
||||
See also linkgit:git-reflog[1].
|
||||
+
|
||||
Under `--pretty=reference`, this information will not be shown at all.
|
||||
|
||||
--merge::
|
||||
After a failed merge, show refs that touch files having a
|
||||
|
|
|
@ -1737,7 +1737,7 @@ __git_log_shortlog_options="
|
|||
--all-match --invert-grep
|
||||
"
|
||||
|
||||
__git_log_pretty_formats="oneline short medium full fuller email raw format: tformat: mboxrd"
|
||||
__git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd"
|
||||
__git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default raw unix format:"
|
||||
|
||||
_git_log ()
|
||||
|
|
4
pretty.c
4
pretty.c
|
@ -98,7 +98,9 @@ static void setup_commit_formats(void)
|
|||
{ "mboxrd", CMIT_FMT_MBOXRD, 0, 0 },
|
||||
{ "fuller", CMIT_FMT_FULLER, 0, 8 },
|
||||
{ "full", CMIT_FMT_FULL, 0, 8 },
|
||||
{ "oneline", CMIT_FMT_ONELINE, 1, 0 }
|
||||
{ "oneline", CMIT_FMT_ONELINE, 1, 0 },
|
||||
{ "reference", CMIT_FMT_USERFORMAT, 1, 0,
|
||||
0, DATE_SHORT, "%C(auto)%h (%s, %ad)" },
|
||||
/*
|
||||
* Please update $__git_log_pretty_formats in
|
||||
* git-completion.bash when you add new formats.
|
||||
|
|
|
@ -824,4 +824,47 @@ test_expect_success '%S in git log --format works with other placeholders (part
|
|||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference' '
|
||||
git log --pretty="tformat:%h (%s, %as)" >expect &&
|
||||
git log --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference with log.date is overridden by short date' '
|
||||
git log --pretty="tformat:%h (%s, %as)" >expect &&
|
||||
test_config log.date rfc &&
|
||||
git log --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference with explicit date overrides short date' '
|
||||
git log --date=rfc --pretty="tformat:%h (%s, %ad)" >expect &&
|
||||
git log --date=rfc --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference is never unabbreviated' '
|
||||
git log --pretty="tformat:%h (%s, %as)" >expect &&
|
||||
git log --no-abbrev-commit --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference is never decorated' '
|
||||
git log --pretty="tformat:%h (%s, %as)" >expect &&
|
||||
git log --decorate=short --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference does not output reflog info' '
|
||||
git log --walk-reflogs --pretty="tformat:%h (%s, %as)" >expect &&
|
||||
git log --walk-reflogs --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log --pretty=reference is colored appropriately' '
|
||||
git log --color=always --pretty="tformat:%C(auto)%h (%s, %as)" >expect &&
|
||||
git log --color=always --pretty=reference >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in New Issue