Merge branch 'ac/log-use-mailmap-by-default-transition'

The "git log" command learns to issue a warning when log.mailmap
configuration is not set and --[no-]mailmap option is not used, to
prepare users for future versions of Git that uses the mailmap by
default.

* ac/log-use-mailmap-by-default-transition:
  tests: defang pager tests by explicitly disabling the log.mailmap warning
  documentation: mention --no-use-mailmap and log.mailmap false setting
  log: add warning for unspecified log.mailmap setting
This commit is contained in:
Junio C Hamano 2019-07-25 13:59:22 -07:00
Родитель f87ee7fd47 ef60740e9e
Коммит c7cf2de8fc
4 изменённых файлов: 29 добавлений и 4 удалений

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

@ -40,4 +40,5 @@ log.showSignature::
log.mailmap::
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1] assume `--use-mailmap`.
linkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise
assume `--no-use-mailmap`. False by default.

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

@ -49,7 +49,7 @@ OPTIONS
Print out the ref name given on the command line by which each
commit was reached.
--use-mailmap::
--[no-]use-mailmap::
Use mailmap file to map author and committer names and email
addresses to canonical real names and email addresses. See
linkgit:git-shortlog[1].

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

@ -47,7 +47,7 @@ static int default_follow;
static int default_show_signature;
static int decoration_style;
static int decoration_given;
static int use_mailmap_config;
static int use_mailmap_config = -1;
static const char *fmt_patch_subject_prefix = "PATCH";
static const char *fmt_pretty;
@ -63,9 +63,14 @@ struct line_opt_callback_data {
struct string_list args;
};
static int session_is_interactive(void)
{
return isatty(1) || pager_in_use();
}
static int auto_decoration_style(void)
{
return (isatty(1) || pager_in_use()) ? DECORATE_SHORT_REFS : 0;
return session_is_interactive() ? DECORATE_SHORT_REFS : 0;
}
static int parse_decoration_style(const char *value)
@ -151,6 +156,16 @@ static void cmd_log_init_defaults(struct rev_info *rev)
parse_date_format(default_date_mode, &rev->date_mode);
}
static char warn_unspecified_mailmap_msg[] =
N_("log.mailmap is not set; its implicit value will change in an\n"
"upcoming release. To squelch this message and preserve current\n"
"behaviour, set the log.mailmap configuration value to false.\n"
"\n"
"To squelch this message and adopt the new behaviour now, set the\n"
"log.mailmap configuration value to true.\n"
"\n"
"See 'git help config' and search for 'log.mailmap' for further information.");
static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
struct rev_info *rev, struct setup_revision_opt *opt)
{
@ -199,6 +214,13 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
memset(&w, 0, sizeof(w));
userformat_find_requirements(NULL, &w);
if (mailmap < 0) {
if (session_is_interactive() && !rev->pretty_given)
warning("%s\n", _(warn_unspecified_mailmap_msg));
mailmap = 0;
}
if (!rev->show_notes_given && (!rev->pretty_given || w.notes))
rev->show_notes = 1;
if (rev->show_notes)

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

@ -7,6 +7,8 @@ test_description='Test automatic use of a pager.'
. "$TEST_DIRECTORY"/lib-terminal.sh
test_expect_success 'setup' '
: squelch advice messages during the transition &&
git config --global log.mailmap false &&
sane_unset GIT_PAGER GIT_PAGER_IN_USE &&
test_unconfig core.pager &&