Skip to content

Commit

Permalink
config option log.showroot to show the diff of root commits
Browse files Browse the repository at this point in the history
This allows one to see a root commit as a diff in commands like git-log,
git-show and git-whatchanged.

Signed-off-by: Peter Baumann <Peter.B.Baumannn@stud.informatik.uni-erlangen.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Peter Baumann authored and Junio C Hamano committed Nov 24, 2006
1 parent 3fbe2d5 commit 0f03ca9
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
6 changes: 6 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,12 @@ i18n.commitEncoding::
browser (and possibly at other places in the future or in other
porcelains). See e.g. gitlink:git-mailinfo[1]. Defaults to 'utf-8'.

log.showroot::
If true, the initial commit will be shown as a big creation event.
This is equivalent to a diff against an empty tree.
Tools like gitlink:git-log[1] or gitlink:git-whatchanged[1], which
normally hide the root commit will now show it. True by default.

merge.summary::
Whether to include summaries of merged commits in newly created
merge commit messages. False by default.
Expand Down
20 changes: 16 additions & 4 deletions builtin-log.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
#include <time.h>
#include <sys/time.h>

static int default_show_root = 1;

/* this is in builtin-diff.c */
void add_head(struct rev_info *revs);

Expand All @@ -22,6 +24,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
rev->abbrev = DEFAULT_ABBREV;
rev->commit_format = CMIT_FMT_DEFAULT;
rev->verbose_header = 1;
rev->show_root_diff = default_show_root;
argc = setup_revisions(argc, argv, rev, "HEAD");
if (rev->diffopt.pickaxe || rev->diffopt.filter)
rev->always_show_header = 0;
Expand All @@ -44,11 +47,20 @@ static int cmd_log_walk(struct rev_info *rev)
return 0;
}

static int git_log_config(const char *var, const char *value)
{
if (!strcmp(var, "log.showroot")) {
default_show_root = git_config_bool(var, value);
return 0;
}
return git_diff_ui_config(var, value);
}

int cmd_whatchanged(int argc, const char **argv, const char *prefix)
{
struct rev_info rev;

git_config(git_diff_ui_config);
git_config(git_log_config);
init_revisions(&rev, prefix);
rev.diff = 1;
rev.diffopt.recursive = 1;
Expand All @@ -63,7 +75,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)
{
struct rev_info rev;

git_config(git_diff_ui_config);
git_config(git_log_config);
init_revisions(&rev, prefix);
rev.diff = 1;
rev.diffopt.recursive = 1;
Expand All @@ -80,7 +92,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)
{
struct rev_info rev;

git_config(git_diff_ui_config);
git_config(git_log_config);
init_revisions(&rev, prefix);
rev.always_show_header = 1;
cmd_log_init(argc, argv, prefix, &rev);
Expand Down Expand Up @@ -109,7 +121,7 @@ static int git_format_config(const char *var, const char *value)
if (!strcmp(var, "diff.color")) {
return 0;
}
return git_diff_ui_config(var, value);
return git_log_config(var, value);
}


Expand Down
1 change: 1 addition & 0 deletions t/t4013-diff-various.sh
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ test_expect_success setup '
for i in 1 2; do echo $i; done >>dir/sub &&
git update-index file0 dir/sub &&
git repo-config log.showroot false &&
git commit --amend &&
git show-branch
'
Expand Down

0 comments on commit 0f03ca9

Please sign in to comment.