log/show/whatchanged: introduce format.pretty configuration

When running log/show/whatchanged from the command line, the user may
want to use a preferred format without having to pass --pretty=<fmt>
option every time from the command line.  This teaches these three
commands to honor a new configuration variable, format.pretty.

The --pretty option given from the command line will override the
configured format.

The earlier patch fixed the in-tree callers that run these commands
for purposes other than showing the output directly to the end user
(the only other in-tree caller is "git bisect visualize", whose output
directly goes to the end user and should be affected by this patch).

Similar fixes will be needed for end-user scripts that parse the
output from these commands and expect them to be in the default pretty
format.

Signed-off-by: Denis Cheng <crquan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Denis Cheng 2008-03-02 17:05:53 +08:00 коммит произвёл Junio C Hamano
Родитель 9225d7be0a
Коммит 94c22a5e7b
3 изменённых файлов: 13 добавлений и 0 удалений

Просмотреть файл

@ -556,6 +556,11 @@ format.suffix::
`.patch`. Use this variable to change that suffix (make sure to `.patch`. Use this variable to change that suffix (make sure to
include the dot if you want it). include the dot if you want it).
format.pretty::
The default pretty format for log/show/whatchanged command,
See linkgit:git-log[1], linkgit:git-show[1],
linkgit:git-whatchanged[1].
gc.aggressiveWindow:: gc.aggressiveWindow::
The window size parameter used in the delta compression The window size parameter used in the delta compression
algorithm used by 'git gc --aggressive'. This defaults algorithm used by 'git gc --aggressive'. This defaults

Просмотреть файл

@ -4,6 +4,9 @@
where '<format>' can be one of 'oneline', 'short', 'medium', where '<format>' can be one of 'oneline', 'short', 'medium',
'full', 'fuller', 'email', 'raw' and 'format:<string>'. 'full', 'fuller', 'email', 'raw' and 'format:<string>'.
When omitted, the format defaults to 'medium'. When omitted, the format defaults to 'medium'.
+
Note: you can specify the default pretty format in the repository
configuration (see linkgit:git-config[1]).
--abbrev-commit:: --abbrev-commit::
Instead of showing the full 40-byte hexadecimal commit object Instead of showing the full 40-byte hexadecimal commit object

Просмотреть файл

@ -20,6 +20,7 @@
static int default_show_root = 1; static int default_show_root = 1;
static const char *fmt_patch_subject_prefix = "PATCH"; static const char *fmt_patch_subject_prefix = "PATCH";
static const char *fmt_pretty;
static void add_name_decoration(const char *prefix, const char *name, struct object *obj) static void add_name_decoration(const char *prefix, const char *name, struct object *obj)
{ {
@ -54,6 +55,8 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
rev->abbrev = DEFAULT_ABBREV; rev->abbrev = DEFAULT_ABBREV;
rev->commit_format = CMIT_FMT_DEFAULT; rev->commit_format = CMIT_FMT_DEFAULT;
if (fmt_pretty)
rev->commit_format = get_commit_format(fmt_pretty);
rev->verbose_header = 1; rev->verbose_header = 1;
DIFF_OPT_SET(&rev->diffopt, RECURSIVE); DIFF_OPT_SET(&rev->diffopt, RECURSIVE);
rev->show_root_diff = default_show_root; rev->show_root_diff = default_show_root;
@ -221,6 +224,8 @@ static int cmd_log_walk(struct rev_info *rev)
static int git_log_config(const char *var, const char *value) static int git_log_config(const char *var, const char *value)
{ {
if (!strcmp(var, "format.pretty"))
return git_config_string(&fmt_pretty, var, value);
if (!strcmp(var, "format.subjectprefix")) { if (!strcmp(var, "format.subjectprefix")) {
if (!value) if (!value)
config_error_nonbool(var); config_error_nonbool(var);