mirror of
https://github.com/git/git
synced 2024-11-05 01:58:18 +00:00
log: add --clear-decorations option
The previous changes introduced a new default ref filter for decorations in the 'git log' command. This can be overridden using --decorate-refs=HEAD and --decorate-refs=refs/, but that is cumbersome for users. Instead, add a --clear-decorations option that resets all previous filters to a blank filter that accepts all refs. Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
92156291ca
commit
748706d713
8 changed files with 371 additions and 7 deletions
|
@ -56,6 +56,11 @@ If none of these options or config settings are given, then references are
|
|||
used as decoration if they match `HEAD`, `refs/heads/`, `refs/remotes/`,
|
||||
`refs/stash/`, or `refs/tags/`.
|
||||
|
||||
--clear-decorations::
|
||||
When specified, this option clears all previous `--decorate-refs`
|
||||
or `--decorate-refs-exclude` options and relaxes the default
|
||||
decoration filter to include all references.
|
||||
|
||||
--source::
|
||||
Print out the ref name given on the command line by which each
|
||||
commit was reached.
|
||||
|
|
|
@ -101,6 +101,20 @@ static int parse_decoration_style(const char *value)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int use_default_decoration_filter = 1;
|
||||
static struct string_list decorate_refs_exclude = STRING_LIST_INIT_NODUP;
|
||||
static struct string_list decorate_refs_exclude_config = STRING_LIST_INIT_NODUP;
|
||||
static struct string_list decorate_refs_include = STRING_LIST_INIT_NODUP;
|
||||
|
||||
static int clear_decorations_callback(const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
string_list_clear(&decorate_refs_include, 0);
|
||||
string_list_clear(&decorate_refs_exclude, 0);
|
||||
use_default_decoration_filter = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int decorate_callback(const struct option *opt, const char *arg, int unset)
|
||||
{
|
||||
if (unset)
|
||||
|
@ -176,7 +190,8 @@ static void set_default_decoration_filter(struct decoration_filter *decoration_f
|
|||
item->string);
|
||||
}
|
||||
|
||||
if (decoration_filter->exclude_ref_pattern->nr ||
|
||||
if (!use_default_decoration_filter ||
|
||||
decoration_filter->exclude_ref_pattern->nr ||
|
||||
decoration_filter->include_ref_pattern->nr ||
|
||||
decoration_filter->exclude_ref_config_pattern->nr)
|
||||
return;
|
||||
|
@ -199,9 +214,6 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
|
|||
struct userformat_want w;
|
||||
int quiet = 0, source = 0, mailmap;
|
||||
static struct line_opt_callback_data line_cb = {NULL, NULL, STRING_LIST_INIT_DUP};
|
||||
static struct string_list decorate_refs_exclude = STRING_LIST_INIT_NODUP;
|
||||
static struct string_list decorate_refs_exclude_config = STRING_LIST_INIT_NODUP;
|
||||
static struct string_list decorate_refs_include = STRING_LIST_INIT_NODUP;
|
||||
struct decoration_filter decoration_filter = {
|
||||
.exclude_ref_pattern = &decorate_refs_exclude,
|
||||
.include_ref_pattern = &decorate_refs_include,
|
||||
|
@ -214,6 +226,10 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
|
|||
OPT_BOOL(0, "source", &source, N_("show source")),
|
||||
OPT_BOOL(0, "use-mailmap", &mailmap, N_("use mail map file")),
|
||||
OPT_ALIAS(0, "mailmap", "use-mailmap"),
|
||||
OPT_CALLBACK_F(0, "clear-decorations", NULL, NULL,
|
||||
N_("clear all previously-defined decoration filters"),
|
||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||
clear_decorations_callback),
|
||||
OPT_STRING_LIST(0, "decorate-refs", &decorate_refs_include,
|
||||
N_("pattern"), N_("only decorate refs that match <pattern>")),
|
||||
OPT_STRING_LIST(0, "decorate-refs-exclude", &decorate_refs_exclude,
|
||||
|
|
|
@ -352,6 +352,8 @@ log -GF -p --pickaxe-all master
|
|||
log -IA -IB -I1 -I2 -p master
|
||||
log --decorate --all
|
||||
log --decorate=full --all
|
||||
log --decorate --clear-decorations --all
|
||||
log --decorate=full --clear-decorations --all
|
||||
|
||||
rev-list --parents HEAD
|
||||
rev-list --children HEAD
|
||||
|
|
61
t/t4013/diff.log_--decorate=full_--clear-decorations_--all
Normal file
61
t/t4013/diff.log_--decorate=full_--clear-decorations_--all
Normal file
|
@ -0,0 +1,61 @@
|
|||
$ git log --decorate=full --clear-decorations --all
|
||||
commit b7e0bc69303b488b47deca799a7d723971dfa6cd (refs/heads/mode)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode
|
||||
|
||||
commit a6f364368ca320bc5a92e18912e16fa6b3dff598 (refs/heads/note)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode (file2)
|
||||
|
||||
Notes:
|
||||
note
|
||||
|
||||
commit cd4e72fd96faed3f0ba949dc42967430374e2290 (refs/heads/rearrange)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Rearranged lines in dir/sub
|
||||
|
||||
commit cbacedd14cb8b89255a2c02b59e77a2e9a8021a0 (refs/notes/commits)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Notes added by 'git notes add'
|
||||
|
||||
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 (HEAD -> refs/heads/master)
|
||||
Merge: 9a6d494 c7a2ab9
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:04:00 2006 +0000
|
||||
|
||||
Merge branch 'side'
|
||||
|
||||
commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a (refs/heads/side)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:03:00 2006 +0000
|
||||
|
||||
Side
|
||||
|
||||
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:02:00 2006 +0000
|
||||
|
||||
Third
|
||||
|
||||
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:01:00 2006 +0000
|
||||
|
||||
Second
|
||||
|
||||
This is the second commit.
|
||||
|
||||
commit 444ac553ac7612cc88969031b02b3767fb8a353a (refs/heads/initial)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:00:00 2006 +0000
|
||||
|
||||
Initial
|
||||
$
|
61
t/t4013/diff.log_--decorate=full_--decorate-all_--all
Normal file
61
t/t4013/diff.log_--decorate=full_--decorate-all_--all
Normal file
|
@ -0,0 +1,61 @@
|
|||
$ git log --decorate=full --decorate-all --all
|
||||
commit b7e0bc69303b488b47deca799a7d723971dfa6cd (refs/heads/mode)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode
|
||||
|
||||
commit a6f364368ca320bc5a92e18912e16fa6b3dff598 (refs/heads/note)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode (file2)
|
||||
|
||||
Notes:
|
||||
note
|
||||
|
||||
commit cd4e72fd96faed3f0ba949dc42967430374e2290 (refs/heads/rearrange)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Rearranged lines in dir/sub
|
||||
|
||||
commit cbacedd14cb8b89255a2c02b59e77a2e9a8021a0 (refs/notes/commits)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Notes added by 'git notes add'
|
||||
|
||||
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 (HEAD -> refs/heads/master)
|
||||
Merge: 9a6d494 c7a2ab9
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:04:00 2006 +0000
|
||||
|
||||
Merge branch 'side'
|
||||
|
||||
commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a (refs/heads/side)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:03:00 2006 +0000
|
||||
|
||||
Side
|
||||
|
||||
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:02:00 2006 +0000
|
||||
|
||||
Third
|
||||
|
||||
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:01:00 2006 +0000
|
||||
|
||||
Second
|
||||
|
||||
This is the second commit.
|
||||
|
||||
commit 444ac553ac7612cc88969031b02b3767fb8a353a (refs/heads/initial)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:00:00 2006 +0000
|
||||
|
||||
Initial
|
||||
$
|
61
t/t4013/diff.log_--decorate_--clear-decorations_--all
Normal file
61
t/t4013/diff.log_--decorate_--clear-decorations_--all
Normal file
|
@ -0,0 +1,61 @@
|
|||
$ git log --decorate --clear-decorations --all
|
||||
commit b7e0bc69303b488b47deca799a7d723971dfa6cd (mode)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode
|
||||
|
||||
commit a6f364368ca320bc5a92e18912e16fa6b3dff598 (note)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode (file2)
|
||||
|
||||
Notes:
|
||||
note
|
||||
|
||||
commit cd4e72fd96faed3f0ba949dc42967430374e2290 (rearrange)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Rearranged lines in dir/sub
|
||||
|
||||
commit cbacedd14cb8b89255a2c02b59e77a2e9a8021a0 (refs/notes/commits)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Notes added by 'git notes add'
|
||||
|
||||
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 (HEAD -> master)
|
||||
Merge: 9a6d494 c7a2ab9
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:04:00 2006 +0000
|
||||
|
||||
Merge branch 'side'
|
||||
|
||||
commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a (side)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:03:00 2006 +0000
|
||||
|
||||
Side
|
||||
|
||||
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:02:00 2006 +0000
|
||||
|
||||
Third
|
||||
|
||||
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:01:00 2006 +0000
|
||||
|
||||
Second
|
||||
|
||||
This is the second commit.
|
||||
|
||||
commit 444ac553ac7612cc88969031b02b3767fb8a353a (initial)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:00:00 2006 +0000
|
||||
|
||||
Initial
|
||||
$
|
61
t/t4013/diff.log_--decorate_--decorate-all_--all
Normal file
61
t/t4013/diff.log_--decorate_--decorate-all_--all
Normal file
|
@ -0,0 +1,61 @@
|
|||
$ git log --decorate --decorate-all --all
|
||||
commit b7e0bc69303b488b47deca799a7d723971dfa6cd (mode)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode
|
||||
|
||||
commit a6f364368ca320bc5a92e18912e16fa6b3dff598 (note)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
update mode (file2)
|
||||
|
||||
Notes:
|
||||
note
|
||||
|
||||
commit cd4e72fd96faed3f0ba949dc42967430374e2290 (rearrange)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Rearranged lines in dir/sub
|
||||
|
||||
commit cbacedd14cb8b89255a2c02b59e77a2e9a8021a0 (refs/notes/commits)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:06:00 2006 +0000
|
||||
|
||||
Notes added by 'git notes add'
|
||||
|
||||
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 (HEAD -> master)
|
||||
Merge: 9a6d494 c7a2ab9
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:04:00 2006 +0000
|
||||
|
||||
Merge branch 'side'
|
||||
|
||||
commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a (side)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:03:00 2006 +0000
|
||||
|
||||
Side
|
||||
|
||||
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:02:00 2006 +0000
|
||||
|
||||
Third
|
||||
|
||||
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:01:00 2006 +0000
|
||||
|
||||
Second
|
||||
|
||||
This is the second commit.
|
||||
|
||||
commit 444ac553ac7612cc88969031b02b3767fb8a353a (initial)
|
||||
Author: A U Thor <author@example.com>
|
||||
Date: Mon Jun 26 00:00:00 2006 +0000
|
||||
|
||||
Initial
|
||||
$
|
103
t/t4202-log.sh
103
t/t4202-log.sh
|
@ -704,9 +704,12 @@ test_expect_success 'set up more tangled history' '
|
|||
git checkout -b tangle HEAD~6 &&
|
||||
test_commit tangle-a tangle-a a &&
|
||||
git merge main~3 &&
|
||||
git update-ref refs/prefetch/merge HEAD &&
|
||||
git merge side~1 &&
|
||||
git update-ref refs/rewritten/merge HEAD &&
|
||||
git checkout main &&
|
||||
git merge tangle &&
|
||||
git update-ref refs/hidden/tangle HEAD &&
|
||||
git checkout -b reach &&
|
||||
test_commit reach &&
|
||||
git checkout main &&
|
||||
|
@ -974,9 +977,9 @@ test_expect_success 'decorate-refs-exclude and simplify-by-decoration' '
|
|||
Merge-tag-reach (HEAD -> main)
|
||||
reach (tag: reach, reach)
|
||||
seventh (tag: seventh)
|
||||
Merge-branch-tangle
|
||||
Merge-branch-side-early-part-into-tangle (tangle)
|
||||
tangle-a (tag: tangle-a)
|
||||
Merge-branch-tangle (refs/hidden/tangle)
|
||||
Merge-branch-side-early-part-into-tangle (refs/rewritten/merge, tangle)
|
||||
Merge-branch-main-early-part-into-tangle (refs/prefetch/merge)
|
||||
EOF
|
||||
git log -n6 --decorate=short --pretty="tformat:%f%d" \
|
||||
--decorate-refs-exclude="*octopus*" \
|
||||
|
@ -1037,6 +1040,100 @@ test_expect_success 'decorate-refs focus from default' '
|
|||
! grep HEAD actual
|
||||
'
|
||||
|
||||
test_expect_success '--clear-decorations overrides defaults' '
|
||||
cat >expect.default <<-\EOF &&
|
||||
Merge-tag-reach (HEAD -> refs/heads/main)
|
||||
Merge-tags-octopus-a-and-octopus-b
|
||||
seventh (tag: refs/tags/seventh)
|
||||
octopus-b (tag: refs/tags/octopus-b, refs/heads/octopus-b)
|
||||
octopus-a (tag: refs/tags/octopus-a, refs/heads/octopus-a)
|
||||
reach (tag: refs/tags/reach, refs/heads/reach)
|
||||
Merge-branch-tangle
|
||||
Merge-branch-side-early-part-into-tangle (refs/heads/tangle)
|
||||
Merge-branch-main-early-part-into-tangle
|
||||
tangle-a (tag: refs/tags/tangle-a)
|
||||
Merge-branch-side
|
||||
side-2 (tag: refs/tags/side-2, refs/heads/side)
|
||||
side-1 (tag: refs/tags/side-1)
|
||||
Second
|
||||
sixth
|
||||
fifth
|
||||
fourth
|
||||
third
|
||||
second
|
||||
initial
|
||||
EOF
|
||||
git log --decorate=full --pretty="tformat:%f%d" >actual &&
|
||||
test_cmp expect.default actual &&
|
||||
|
||||
cat >expect.all <<-\EOF &&
|
||||
Merge-tag-reach (HEAD -> refs/heads/main)
|
||||
Merge-tags-octopus-a-and-octopus-b
|
||||
seventh (tag: refs/tags/seventh)
|
||||
octopus-b (tag: refs/tags/octopus-b, refs/heads/octopus-b)
|
||||
octopus-a (tag: refs/tags/octopus-a, refs/heads/octopus-a)
|
||||
reach (tag: refs/tags/reach, refs/heads/reach)
|
||||
Merge-branch-tangle (refs/hidden/tangle)
|
||||
Merge-branch-side-early-part-into-tangle (refs/rewritten/merge, refs/heads/tangle)
|
||||
Merge-branch-main-early-part-into-tangle (refs/prefetch/merge)
|
||||
tangle-a (tag: refs/tags/tangle-a)
|
||||
Merge-branch-side
|
||||
side-2 (tag: refs/tags/side-2, refs/heads/side)
|
||||
side-1 (tag: refs/tags/side-1)
|
||||
Second
|
||||
sixth
|
||||
fifth
|
||||
fourth
|
||||
third
|
||||
second
|
||||
initial
|
||||
EOF
|
||||
git log --decorate=full --pretty="tformat:%f%d" \
|
||||
--clear-decorations >actual &&
|
||||
test_cmp expect.all actual
|
||||
'
|
||||
|
||||
test_expect_success '--clear-decorations clears previous exclusions' '
|
||||
cat >expect.all <<-\EOF &&
|
||||
Merge-tag-reach (HEAD -> refs/heads/main)
|
||||
reach (tag: refs/tags/reach, refs/heads/reach)
|
||||
Merge-tags-octopus-a-and-octopus-b
|
||||
octopus-b (tag: refs/tags/octopus-b, refs/heads/octopus-b)
|
||||
octopus-a (tag: refs/tags/octopus-a, refs/heads/octopus-a)
|
||||
seventh (tag: refs/tags/seventh)
|
||||
Merge-branch-tangle (refs/hidden/tangle)
|
||||
Merge-branch-side-early-part-into-tangle (refs/rewritten/merge, refs/heads/tangle)
|
||||
Merge-branch-main-early-part-into-tangle (refs/prefetch/merge)
|
||||
tangle-a (tag: refs/tags/tangle-a)
|
||||
side-2 (tag: refs/tags/side-2, refs/heads/side)
|
||||
side-1 (tag: refs/tags/side-1)
|
||||
initial
|
||||
EOF
|
||||
|
||||
git log --decorate=full --pretty="tformat:%f%d" \
|
||||
--simplify-by-decoration \
|
||||
--decorate-refs-exclude="heads/octopus*" \
|
||||
--decorate-refs="heads" \
|
||||
--clear-decorations >actual &&
|
||||
test_cmp expect.all actual &&
|
||||
|
||||
cat >expect.filtered <<-\EOF &&
|
||||
Merge-tags-octopus-a-and-octopus-b
|
||||
octopus-b (refs/heads/octopus-b)
|
||||
octopus-a (refs/heads/octopus-a)
|
||||
initial
|
||||
EOF
|
||||
|
||||
git log --decorate=full --pretty="tformat:%f%d" \
|
||||
--simplify-by-decoration \
|
||||
--decorate-refs-exclude="heads/octopus" \
|
||||
--decorate-refs="heads" \
|
||||
--clear-decorations \
|
||||
--decorate-refs-exclude="tags/" \
|
||||
--decorate-refs="heads/octopus*" >actual &&
|
||||
test_cmp expect.filtered actual
|
||||
'
|
||||
|
||||
test_expect_success 'log.decorate config parsing' '
|
||||
git log --oneline --decorate=full >expect.full &&
|
||||
git log --oneline --decorate=short >expect.short &&
|
||||
|
|
Loading…
Reference in a new issue