Skip to content

Commit

Permalink
log --pretty/--oneline: ignore log.decorate
Browse files Browse the repository at this point in the history
Many scripts, most notably gitk, rely on output from the log family of
command not to be molested by random user configuration.  This is
especially true when --pretty=raw is given.

Just like we disable notes output unless the command line explicitly
asks for --show-notes, disable the decoration code unless --decorate is
given explicitly from the command line and --pretty or --oneline is
given.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Apr 6, 2010
1 parent 8a3d203 commit 635530a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 16 deletions.
11 changes: 11 additions & 0 deletions builtin-log.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
struct rev_info *rev)
{
int i;
int decoration_given = 0;

rev->abbrev = DEFAULT_ABBREV;
rev->commit_format = CMIT_FMT_DEFAULT;
Expand Down Expand Up @@ -89,11 +90,13 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
const char *arg = argv[i];
if (!strcmp(arg, "--decorate")) {
decoration_style = DECORATE_SHORT_REFS;
decoration_given = 1;
} else if (!prefixcmp(arg, "--decorate=")) {
const char *v = skip_prefix(arg, "--decorate=");
decoration_style = parse_decoration_style(arg, v);
if (decoration_style < 0)
die("invalid --decorate option: %s", arg);
decoration_given = 1;
} else if (!strcmp(arg, "--no-decorate")) {
decoration_style = 0;
} else if (!strcmp(arg, "--source")) {
Expand All @@ -103,6 +106,14 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
} else
die("unrecognized argument: %s", arg);
}

/*
* defeat log.decorate configuration interacting with --pretty
* from the command line.
*/
if (!decoration_given && rev->pretty_given)
decoration_style = 0;

if (decoration_style) {
rev->show_decorations = 1;
load_ref_decorations(decoration_style);
Expand Down
44 changes: 28 additions & 16 deletions t/t4202-log.sh
Original file line number Diff line number Diff line change
Expand Up @@ -390,50 +390,62 @@ test_expect_success 'log --graph with merge' '
test_expect_success 'log.decorate configuration' '
git config --unset-all log.decorate || :
git log --oneline >expect.none &&
git log --oneline --decorate >expect.short &&
git log --oneline --decorate=full >expect.full &&
git log >expect.none &&
git log --decorate >expect.short &&
git log --decorate=full >expect.full &&
git log --oneline >expect.oneline &&
echo "[log] decorate" >>.git/config &&
git log --oneline >actual &&
git log >actual &&
test_cmp expect.short actual &&
git log --oneline >actual &&
test_cmp expect.oneline actual &&
git config --unset-all log.decorate &&
git config log.decorate true &&
git log --oneline >actual &&
git log >actual &&
test_cmp expect.short actual &&
git log --oneline --decorate=full >actual &&
git log --decorate=full >actual &&
test_cmp expect.full actual &&
git log --oneline --decorate=no >actual &&
git log --decorate=no >actual &&
test_cmp expect.none actual &&
git log --oneline >actual &&
test_cmp expect.oneline actual &&
git config --unset-all log.decorate &&
git config log.decorate no &&
git log --oneline >actual &&
git log >actual &&
test_cmp expect.none actual &&
git log --oneline --decorate >actual &&
git log --decorate >actual &&
test_cmp expect.short actual &&
git log --oneline --decorate=full >actual &&
git log --decorate=full >actual &&
test_cmp expect.full actual &&
git log --oneline >actual &&
test_cmp expect.oneline actual &&
git config --unset-all log.decorate &&
git config log.decorate short &&
git log --oneline >actual &&
git log >actual &&
test_cmp expect.short actual &&
git log --oneline --no-decorate >actual &&
git log --no-decorate >actual &&
test_cmp expect.none actual &&
git log --oneline --decorate=full >actual &&
git log --decorate=full >actual &&
test_cmp expect.full actual &&
git log --oneline >actual &&
test_cmp expect.oneline actual &&
git config --unset-all log.decorate &&
git config log.decorate full &&
git log --oneline >actual &&
git log >actual &&
test_cmp expect.full actual &&
git log --oneline --no-decorate >actual &&
git log --no-decorate >actual &&
test_cmp expect.none actual &&
git log --oneline --decorate >actual &&
git log --decorate >actual &&
test_cmp expect.short actual
git log --oneline >actual &&
test_cmp expect.oneline actual &&
:
'

test_done
Expand Down

0 comments on commit 635530a

Please sign in to comment.