This allows one to see the root commit as a diff in commands like git-log, git-show and git-whatchanged. It also modifies git-diff-tree to act as --root was specified on the commandline. The default is set to true. Signed-off-by: Peter Baumann <Peter.B.Baumannn@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> --- I'm not sure if making core.showroot acting on git-diff-tree is the right thing to do. Please check first bevore applying. Documentation/config.txt | 6 ++++++ builtin-diff-tree.c | 1 + builtin-log.c | 3 +++ cache.h | 1 + config.c | 5 +++++ environment.c | 1 + 6 files changed, 17 insertions(+), 0 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index 9d3c71c..7e600ca 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -110,6 +110,12 @@ core.legacyheaders:: database directly (where the "http://" and "rsync://" protocols count as direct access). +core.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. + alias.*:: Command aliases for the gitlink:git[1] command wrapper - e.g. after defining "alias.last = cat-file commit HEAD", the invocation diff --git a/builtin-diff-tree.c b/builtin-diff-tree.c index 24cb2d7..d58b7ca 100644 --- a/builtin-diff-tree.c +++ b/builtin-diff-tree.c @@ -72,6 +72,7 @@ int cmd_diff_tree(int argc, const char * nr_sha1 = 0; opt->abbrev = 0; opt->diff = 1; + opt->show_root_diff = show_root_diff; argc = setup_revisions(argc, argv, opt, NULL); while (--argc > 0) { diff --git a/builtin-log.c b/builtin-log.c index fedb013..9541c7d 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -53,6 +53,7 @@ int cmd_whatchanged(int argc, const char rev.diff = 1; rev.diffopt.recursive = 1; rev.simplify_history = 0; + rev.show_root_diff = show_root_diff; cmd_log_init(argc, argv, prefix, &rev); if (!rev.diffopt.output_format) rev.diffopt.output_format = DIFF_FORMAT_RAW; @@ -72,6 +73,7 @@ int cmd_show(int argc, const char **argv rev.always_show_header = 1; rev.ignore_merges = 0; rev.no_walk = 1; + rev.show_root_diff = show_root_diff; cmd_log_init(argc, argv, prefix, &rev); return cmd_log_walk(&rev); } @@ -83,6 +85,7 @@ int cmd_log(int argc, const char **argv, git_config(git_diff_ui_config); init_revisions(&rev, prefix); rev.always_show_header = 1; + rev.show_root_diff = show_root_diff; cmd_log_init(argc, argv, prefix, &rev); return cmd_log_walk(&rev); } diff --git a/cache.h b/cache.h index f2ec5c8..feff2bd 100644 --- a/cache.h +++ b/cache.h @@ -191,6 +191,7 @@ extern int warn_ambiguous_refs; extern int shared_repository; extern const char *apply_default_whitespace; extern int zlib_compression_level; +extern int show_root_diff; #define GIT_REPO_VERSION 0 extern int repository_format_version; diff --git a/config.c b/config.c index 3cae390..dd720b5 100644 --- a/config.c +++ b/config.c @@ -319,6 +319,11 @@ int git_default_config(const char *var, return 0; } + if (!strcmp(var, "core.showroot")) { + show_root_diff = git_config_bool(var, value); + return 0; + } + /* Add other config variables here and to Documentation/config.txt. */ return 0; } diff --git a/environment.c b/environment.c index 84d870c..71099f4 100644 --- a/environment.c +++ b/environment.c @@ -24,6 +24,7 @@ const char *apply_default_whitespace; int zlib_compression_level = Z_DEFAULT_COMPRESSION; int pager_in_use; int pager_use_color = 1; +int show_root_diff = 1; static const char *git_dir; static char *git_object_dir, *git_index_file, *git_refs_dir, *git_graft_file; -- 1.4.3.3 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html