{"thread":{"id":"39815","subject":"[PATCH v4] log: add log.follow config option","startedAt":"2015-07-08T17:42:01Z","lastAt":"2015-07-10T21:03:25Z","messageCount":7,"participants":["David Turner","Matthieu Moy","Junio C Hamano"],"isPatch":true,"patchVersion":4,"patchTotal":null},"messages":[{"id":"265863","messageId":"1436377321-8495-1-git-send-email-dturner@twopensource.com","threadId":"39815","inReplyTo":null,"subject":"[PATCH v4] log: add log.follow config option","fromName":"David Turner","fromEmail":"dturner@twopensource.com","sentAt":"2015-07-08T17:42:01Z","receivedAt":"2015-07-08T17:42:01Z","isPatch":true,"sender":{"key":"novalis@novalis.org","avatar":"https://avatars.githubusercontent.com/u/77003?v=4"},"body":"This version uses tweak, and also includes Matthieu Moy's suggested\nwhitespace fix.\n\n---\nMany users prefer to always use --follow with logs.  Rather than\naliasing the command, an option might be more convenient for some.\n\nJunio C Hamano <gitster@pobox.com> suggested using the tweak\nfunctionality for this, which is much nicer than what I had before.\n\nSigned-off-by: David Turner <dturner@twopensource.com>\n---\n Documentation/git-log.txt |  6 ++++++\n builtin/log.c             | 16 ++++++++++++++++\n diff.c                    |  5 +++--\n diff.h                    |  1 +\n t/t4202-log.sh            | 23 +++++++++++++++++++++++\n 5 files changed, 49 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/git-log.txt b/Documentation/git-log.txt\nindex 5692945..79bf4d4 100644\n--- a/Documentation/git-log.txt\n+++ b/Documentation/git-log.txt\n@@ -184,6 +184,12 @@ log.date::\n \t`--date` option.)  Defaults to \"default\", which means to write\n \tdates like `Sat May 8 19:35:34 2010 -0500`.\n \n+log.follow::\n+\tIf a single file argument is given to git log, it will act as\n+\tif the `--follow` option was also used.  This has the same\n+\tlimitations as `--follow`, i.e. it cannot be used to follow\n+\tmultiple files and does not work well on non-linear history.\n+\n log.showRoot::\n \tIf `false`, `git log` and related commands will not treat the\n \tinitial commit as a big creation event.  Any root commits in\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 8781049..d06248a 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -31,6 +31,7 @@ static const char *default_date_mode = NULL;\n \n static int default_abbrev_commit;\n static int default_show_root = 1;\n+static int default_follow;\n static int decoration_style;\n static int decoration_given;\n static int use_mailmap_config;\n@@ -102,6 +103,8 @@ static void cmd_log_init_defaults(struct rev_info *rev)\n {\n \tif (fmt_pretty)\n \t\tget_commit_format(fmt_pretty, rev);\n+\tif (default_follow)\n+\t\tDIFF_OPT_SET(&rev->diffopt, DEFAULT_FOLLOW_RENAMES);\n \trev->verbose_header = 1;\n \tDIFF_OPT_SET(&rev->diffopt, RECURSIVE);\n \trev->diffopt.stat_width = -1; /* use full terminal width */\n@@ -390,6 +393,10 @@ static int git_log_config(const char *var, const char *value, void *cb)\n \t\tdefault_show_root = git_config_bool(var, value);\n \t\treturn 0;\n \t}\n+\tif (!strcmp(var, \"log.follow\")) {\n+\t\tdefault_follow = git_config_bool(var, value);\n+\t\treturn 0;\n+\t}\n \tif (skip_prefix(var, \"color.decorate.\", &slot_name))\n \t\treturn parse_decorate_color_config(var, slot_name, value);\n \tif (!strcmp(var, \"log.mailmap\")) {\n@@ -618,6 +625,14 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n \treturn cmd_log_walk(&rev);\n }\n \n+static void default_follow_tweak(struct rev_info *rev,\n+\t\t\t\t struct setup_revision_opt *opt)\n+{\n+\tif (DIFF_OPT_TST(&rev->diffopt, DEFAULT_FOLLOW_RENAMES) &&\n+\t    rev->prune_data.nr == 1)\n+\t\tDIFF_OPT_SET(&rev->diffopt, FOLLOW_RENAMES);\n+}\n+\n int cmd_log(int argc, const char **argv, const char *prefix)\n {\n \tstruct rev_info rev;\n@@ -631,6 +646,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)\n \tmemset(&opt, 0, sizeof(opt));\n \topt.def = \"HEAD\";\n \topt.revarg_opt = REVARG_COMMITTISH;\n+\topt.tweak = default_follow_tweak;\n \tcmd_log_init(argc, argv, prefix, &rev, &opt);\n \treturn cmd_log_walk(&rev);\n }\ndiff --git a/diff.c b/diff.c\nindex 87b16d5..135b222 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -3815,9 +3815,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)\n \t\tDIFF_OPT_SET(options, FIND_COPIES_HARDER);\n \telse if (!strcmp(arg, \"--follow\"))\n \t\tDIFF_OPT_SET(options, FOLLOW_RENAMES);\n-\telse if (!strcmp(arg, \"--no-follow\"))\n+\telse if (!strcmp(arg, \"--no-follow\")) {\n \t\tDIFF_OPT_CLR(options, FOLLOW_RENAMES);\n-\telse if (!strcmp(arg, \"--color\"))\n+\t\tDIFF_OPT_CLR(options, DEFAULT_FOLLOW_RENAMES);\n+\t} else if (!strcmp(arg, \"--color\"))\n \t\toptions->use_color = 1;\n \telse if (skip_prefix(arg, \"--color=\", &arg)) {\n \t\tint value = git_config_colorbool(NULL, arg);\ndiff --git a/diff.h b/diff.h\nindex c7ad42a..f7208ad 100644\n--- a/diff.h\n+++ b/diff.h\n@@ -91,6 +91,7 @@ typedef struct strbuf *(*diff_prefix_fn_t)(struct diff_options *opt, void *data)\n #define DIFF_OPT_DIRSTAT_BY_LINE     (1 << 28)\n #define DIFF_OPT_FUNCCONTEXT         (1 << 29)\n #define DIFF_OPT_PICKAXE_IGNORE_CASE (1 << 30)\n+#define DIFF_OPT_DEFAULT_FOLLOW_RENAMES (1 << 31)\n \n #define DIFF_OPT_TST(opts, flag)    ((opts)->flags & DIFF_OPT_##flag)\n #define DIFF_OPT_TOUCHED(opts, flag)    ((opts)->touched_flags & DIFF_OPT_##flag)\ndiff --git a/t/t4202-log.sh b/t/t4202-log.sh\nindex 1b2e981..35d2d7c 100755\n--- a/t/t4202-log.sh\n+++ b/t/t4202-log.sh\n@@ -146,7 +146,30 @@ test_expect_success 'git log --follow' '\n \tactual=$(git log --follow --pretty=\"format:%s\" ichi) &&\n \texpect=$(echo third ; echo second ; echo initial) &&\n \tverbose test \"$actual\" = \"$expect\"\n+'\n+\n+test_expect_success 'git config log.follow works like --follow' '\n+\ttest_config log.follow true &&\n+\tactual=$(git log --pretty=\"format:%s\" ichi) &&\n+\texpect=$(echo third ; echo second ; echo initial) &&\n+\tverbose test \"$actual\" = \"$expect\"\n+'\n \n+test_expect_success 'git config log.follow does not die with multiple paths' '\n+\ttest_config log.follow true &&\n+\tgit log --pretty=\"format:%s\" ichi ein\n+'\n+\n+test_expect_success 'git config log.follow does not die with no paths' '\n+\ttest_config log.follow true &&\n+\tgit log --\n+'\n+\n+test_expect_success 'git config log.follow is overridden by --no-follow' '\n+\ttest_config log.follow true &&\n+\tactual=$(git log --no-follow --pretty=\"format:%s\" ichi) &&\n+\texpect=\"third\" &&\n+\tverbose test \"$actual\" = \"$expect\"\n '\n \n cat > expect << EOF\n-- \n2.0.5.499.g01f6352.dirty-twtrsrc\n"},{"id":"265897","messageId":"vpqfv4xafpp.fsf@anie.imag.fr","threadId":"39815","inReplyTo":"1436377321-8495-1-git-send-email-dturner@twopensource.com","subject":"Re: [PATCH v4] log: add log.follow config option","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2015-07-09T08:38:10Z","receivedAt":"2015-07-09T08:38:10Z","isPatch":true,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"David Turner <dturner@twopensource.com> writes:\n\n> This version uses tweak, and also includes Matthieu Moy's suggested\n> whitespace fix.\n\nThis comment should come below the --- after the commit message (right\nbefore the diffstat). Otherwise, Junio will get this as the commit\nmessage when applying, and your actual commit message will be ignored.\n\n> ---\n> Many users prefer to always use --follow with logs.  Rather than\n> aliasing the command, an option might be more convenient for some.\n>\n> Junio C Hamano <gitster@pobox.com> suggested using the tweak\n> functionality for this, which is much nicer than what I had before.\n\nI would avoid using \"what I had before\" in the commit message: readers\nof \"git log\" do not know what you had before. OTOH, crediting Junio for\nthe idea is good.\n\n> Signed-off-by: David Turner <dturner@twopensource.com>\n> ---\n\n(This is the place for comments)\n\n>  Documentation/git-log.txt |  6 ++++++\n>  builtin/log.c             | 16 ++++++++++++++++\n>  diff.c                    |  5 +++--\n>  diff.h                    |  1 +\n>  t/t4202-log.sh            | 23 +++++++++++++++++++++++\n>  5 files changed, 49 insertions(+), 2 deletions(-)\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"265928","messageId":"xmqqegkhw8hf.fsf@gitster.dls.corp.google.com","threadId":"39815","inReplyTo":"vpqfv4xafpp.fsf@anie.imag.fr","subject":"Re: [PATCH v4] log: add log.follow config option","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-07-09T17:23:24Z","receivedAt":"2015-07-09T17:23:24Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:\n\n> David Turner <dturner@twopensource.com> writes:\n>\n>> This version uses tweak, and also includes Matthieu Moy's suggested\n>> whitespace fix.\n>\n> This comment should come below the --- after the commit message (right\n> before the diffstat). Otherwise, Junio will get this as the commit\n> message when applying, and your actual commit message will be ignored.\n>\n>> ---\n>> Many users prefer to always use --follow with logs.  Rather than\n>> aliasing the command, an option might be more convenient for some.\n>>\n>> Junio C Hamano <gitster@pobox.com> suggested using the tweak\n>> functionality for this, which is much nicer than what I had before.\n>\n> I would avoid using \"what I had before\" in the commit message: readers\n> of \"git log\" do not know what you had before.\n\nThat, together with \"This version uses...\", should go below the\nthree-dash line after the real log message.  \"compared to what I had\nbefore\" is a perfectly good thing to say to help reviewers there.\n\n> OTOH, crediting Junio for the idea is good.\n\nI do not think I deserve anything more than a Helped-by on this\nparticular one, if any.\n\nMore importantly, the \"real log message\" part somewhat lacking, I\nthink.  The commit author is in no position to declare \"Many users\nprefer X\" as if it were a fact.  But the author is in a very good\nposition to explain:\n\n - why users might want to do X under what condition;\n - how the new feature helps them do so; and\n - how the implementation carefully avoids not doing unwanted things\n   when inappropriate.\n\nall of which would give good justifications for the change.\n\nIf I were David and sending this v4 patch, it would have looked like\nthis.\n\n-- >8 --\n\nFrom: David Turner <dturner@twopensource.com>\nDate: Tue, 7 Jul 2015 21:29:34 -0400\nSubject: [PATCH v4] log: add \"log.follow\" configuration variable\n\nPeople who work on projects with mostly linear history with frequent\nwhole file renames may want to always use \"git log --follow\" when\ninspecting the life of the content that live in a single path.\n\nTeach the command to behave as if \"--follow\" was given from the\ncommand line when log.follow configuration variable is set *and*\nthere is one (and only one) path on the command line.\n\nSigned-off-by: David Turner <dturner@twopensource.com>\n---\n\n * Changes from v3:\n   - fixed whitespace breakage in test, pointed out by Matthieu\n   - revert all changes to revision.c; instead use the existing\n     opt->tweak() mechanism, suggested by Junio\n\n Documentation/git-log.txt |  6 ++++++\n builtin/log.c             | 16 ++++++++++++++++\n diff.c                    |  5 +++--\n diff.h                    |  1 +\n t/t4202-log.sh            | 23 +++++++++++++++++++++++\n 5 files changed, 49 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/git-log.txt b/Documentation/git-log.txt\nindex 5692945..79bf4d4 100644\n--- a/Documentation/git-log.txt\n+++ b/Documentation/git-log.txt\n@@ -184,6 +184,12 @@ log.date::\n \t`--date` option.)  Defaults to \"default\", which means to write\n \tdates like `Sat May 8 19:35:34 2010 -0500`.\n \n+log.follow::\n+\tIf a single <path> is given to git log, it will act as\n+\tif the `--follow` option was also used.  This has the same\n+\tlimitations as `--follow`, i.e. it cannot be used to follow\n+\tmultiple files and does not work well on non-linear history.\n+\n log.showRoot::\n \tIf `false`, `git log` and related commands will not treat the\n \tinitial commit as a big creation event.  Any root commits in\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 8781049..d06248a 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -31,6 +31,7 @@ static const char *default_date_mode = NULL;\n \n static int default_abbrev_commit;\n static int default_show_root = 1;\n+static int default_follow;\n static int decoration_style;\n static int decoration_given;\n static int use_mailmap_config;\n@@ -102,6 +103,8 @@ static void cmd_log_init_defaults(struct rev_info *rev)\n {\n \tif (fmt_pretty)\n \t\tget_commit_format(fmt_pretty, rev);\n+\tif (default_follow)\n+\t\tDIFF_OPT_SET(&rev->diffopt, DEFAULT_FOLLOW_RENAMES);\n \trev->verbose_header = 1;\n \tDIFF_OPT_SET(&rev->diffopt, RECURSIVE);\n \trev->diffopt.stat_width = -1; /* use full terminal width */\n@@ -390,6 +393,10 @@ static int git_log_config(const char *var, const char *value, void *cb)\n \t\tdefault_show_root = git_config_bool(var, value);\n \t\treturn 0;\n \t}\n+\tif (!strcmp(var, \"log.follow\")) {\n+\t\tdefault_follow = git_config_bool(var, value);\n+\t\treturn 0;\n+\t}\n \tif (skip_prefix(var, \"color.decorate.\", &slot_name))\n \t\treturn parse_decorate_color_config(var, slot_name, value);\n \tif (!strcmp(var, \"log.mailmap\")) {\n@@ -618,6 +625,14 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n \treturn cmd_log_walk(&rev);\n }\n \n+static void default_follow_tweak(struct rev_info *rev,\n+\t\t\t\t struct setup_revision_opt *opt)\n+{\n+\tif (DIFF_OPT_TST(&rev->diffopt, DEFAULT_FOLLOW_RENAMES) &&\n+\t    rev->prune_data.nr == 1)\n+\t\tDIFF_OPT_SET(&rev->diffopt, FOLLOW_RENAMES);\n+}\n+\n int cmd_log(int argc, const char **argv, const char *prefix)\n {\n \tstruct rev_info rev;\n@@ -631,6 +646,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)\n \tmemset(&opt, 0, sizeof(opt));\n \topt.def = \"HEAD\";\n \topt.revarg_opt = REVARG_COMMITTISH;\n+\topt.tweak = default_follow_tweak;\n \tcmd_log_init(argc, argv, prefix, &rev, &opt);\n \treturn cmd_log_walk(&rev);\n }\ndiff --git a/diff.c b/diff.c\nindex 87b16d5..135b222 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -3815,9 +3815,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)\n \t\tDIFF_OPT_SET(options, FIND_COPIES_HARDER);\n \telse if (!strcmp(arg, \"--follow\"))\n \t\tDIFF_OPT_SET(options, FOLLOW_RENAMES);\n-\telse if (!strcmp(arg, \"--no-follow\"))\n+\telse if (!strcmp(arg, \"--no-follow\")) {\n \t\tDIFF_OPT_CLR(options, FOLLOW_RENAMES);\n-\telse if (!strcmp(arg, \"--color\"))\n+\t\tDIFF_OPT_CLR(options, DEFAULT_FOLLOW_RENAMES);\n+\t} else if (!strcmp(arg, \"--color\"))\n \t\toptions->use_color = 1;\n \telse if (skip_prefix(arg, \"--color=\", &arg)) {\n \t\tint value = git_config_colorbool(NULL, arg);\ndiff --git a/diff.h b/diff.h\nindex c7ad42a..f7208ad 100644\n--- a/diff.h\n+++ b/diff.h\n@@ -91,6 +91,7 @@ typedef struct strbuf *(*diff_prefix_fn_t)(struct diff_options *opt, void *data)\n #define DIFF_OPT_DIRSTAT_BY_LINE     (1 << 28)\n #define DIFF_OPT_FUNCCONTEXT         (1 << 29)\n #define DIFF_OPT_PICKAXE_IGNORE_CASE (1 << 30)\n+#define DIFF_OPT_DEFAULT_FOLLOW_RENAMES (1 << 31)\n \n #define DIFF_OPT_TST(opts, flag)    ((opts)->flags & DIFF_OPT_##flag)\n #define DIFF_OPT_TOUCHED(opts, flag)    ((opts)->touched_flags & DIFF_OPT_##flag)\ndiff --git a/t/t4202-log.sh b/t/t4202-log.sh\nindex 1b2e981..35d2d7c 100755\n--- a/t/t4202-log.sh\n+++ b/t/t4202-log.sh\n@@ -146,7 +146,30 @@ test_expect_success 'git log --follow' '\n \tactual=$(git log --follow --pretty=\"format:%s\" ichi) &&\n \texpect=$(echo third ; echo second ; echo initial) &&\n \tverbose test \"$actual\" = \"$expect\"\n+'\n+\n+test_expect_success 'git config log.follow works like --follow' '\n+\ttest_config log.follow true &&\n+\tactual=$(git log --pretty=\"format:%s\" ichi) &&\n+\texpect=$(echo third ; echo second ; echo initial) &&\n+\tverbose test \"$actual\" = \"$expect\"\n+'\n \n+test_expect_success 'git config log.follow does not die with multiple paths' '\n+\ttest_config log.follow true &&\n+\tgit log --pretty=\"format:%s\" ichi ein\n+'\n+\n+test_expect_success 'git config log.follow does not die with no paths' '\n+\ttest_config log.follow true &&\n+\tgit log --\n+'\n+\n+test_expect_success 'git config log.follow is overridden by --no-follow' '\n+\ttest_config log.follow true &&\n+\tactual=$(git log --no-follow --pretty=\"format:%s\" ichi) &&\n+\texpect=\"third\" &&\n+\tverbose test \"$actual\" = \"$expect\"\n '\n \n cat > expect << EOF\n-- \n2.5.0-rc1-326-g3cdaa82\n"},{"id":"265930","messageId":"1436463511.4542.27.camel@twopensource.com","threadId":"39815","inReplyTo":"xmqqegkhw8hf.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH v4] log: add log.follow config option","fromName":"David Turner","fromEmail":"dturner@twopensource.com","sentAt":"2015-07-09T17:38:31Z","receivedAt":"2015-07-09T17:38:31Z","isPatch":true,"sender":{"key":"novalis@novalis.org","avatar":"https://avatars.githubusercontent.com/u/77003?v=4"},"body":"On Thu, 2015-07-09 at 10:23 -0700, Junio C Hamano wrote:\n<snip>\n> If I were David and sending this v4 patch, it would have looked like\n> this.\n>\n> -- >8 --\n> \n> From: David Turner <dturner@twopensource.com>\n> Date: Tue, 7 Jul 2015 21:29:34 -0400\n> Subject: [PATCH v4] log: add \"log.follow\" configuration variable\n> \n> People who work on projects with mostly linear history with frequent\n> whole file renames may want to always use \"git log --follow\" when\n> inspecting the life of the content that live in a single path.\n> \n> Teach the command to behave as if \"--follow\" was given from the\n> command line when log.follow configuration variable is set *and*\n> there is one (and only one) path on the command line.\n\n\nThanks.  That version is much better.\n"},{"id":"265931","messageId":"xmqq615tw6vn.fsf@gitster.dls.corp.google.com","threadId":"39815","inReplyTo":"1436463511.4542.27.camel@twopensource.com","subject":"Re: [PATCH v4] log: add log.follow config option","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-07-09T17:58:04Z","receivedAt":"2015-07-09T17:58:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"David Turner <dturner@twopensource.com> writes:\n\n> On Thu, 2015-07-09 at 10:23 -0700, Junio C Hamano wrote:\n> <snip>\n>> If I were David and sending this v4 patch, it would have looked like\n>> this.\n>>\n>> -- >8 --\n>> \n>> From: David Turner <dturner@twopensource.com>\n>> Date: Tue, 7 Jul 2015 21:29:34 -0400\n>> Subject: [PATCH v4] log: add \"log.follow\" configuration variable\n>> \n>> People who work on projects with mostly linear history with frequent\n>> whole file renames may want to always use \"git log --follow\" when\n>> inspecting the life of the content that live in a single path.\n>> \n>> Teach the command to behave as if \"--follow\" was given from the\n>> command line when log.follow configuration variable is set *and*\n>> there is one (and only one) path on the command line.\n>\n>\n> Thanks.  That version is much better.\n\nNo, thank _you_; we should be thanking you for helping us improve\nthe system ;-)\n"},{"id":"265996","messageId":"1436550835.4542.69.camel@twopensource.com","threadId":"39815","inReplyTo":"xmqq615tw6vn.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH v4] log: add log.follow config option","fromName":"David Turner","fromEmail":"dturner@twopensource.com","sentAt":"2015-07-10T17:53:55Z","receivedAt":"2015-07-10T17:53:55Z","isPatch":true,"sender":{"key":"novalis@novalis.org","avatar":"https://avatars.githubusercontent.com/u/77003?v=4"},"body":"On Thu, 2015-07-09 at 10:58 -0700, Junio C Hamano wrote:\n> David Turner <dturner@twopensource.com> writes:\n> \n> > On Thu, 2015-07-09 at 10:23 -0700, Junio C Hamano wrote:\n> > <snip>\n> >> If I were David and sending this v4 patch, it would have looked like\n> >> this.\n> >>\n> >> -- >8 --\n> >> \n> >> From: David Turner <dturner@twopensource.com>\n> >> Date: Tue, 7 Jul 2015 21:29:34 -0400\n> >> Subject: [PATCH v4] log: add \"log.follow\" configuration variable\n> >> \n> >> People who work on projects with mostly linear history with frequent\n> >> whole file renames may want to always use \"git log --follow\" when\n> >> inspecting the life of the content that live in a single path.\n> >> \n> >> Teach the command to behave as if \"--follow\" was given from the\n> >> command line when log.follow configuration variable is set *and*\n> >> there is one (and only one) path on the command line.\n> >\n> >\n> > Thanks.  That version is much better.\n> \n> No, thank _you_; we should be thanking you for helping us improve\n> the system ;-)\n\nDo I need to re-send, or will you queue your version?\n"},{"id":"266003","messageId":"xmqqpp3zk9nm.fsf@gitster.dls.corp.google.com","threadId":"39815","inReplyTo":"1436550835.4542.69.camel@twopensource.com","subject":"Re: [PATCH v4] log: add log.follow config option","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-07-10T21:03:25Z","receivedAt":"2015-07-10T21:03:25Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"David Turner <dturner@twopensource.com> writes:\n\n> On Thu, 2015-07-09 at 10:58 -0700, Junio C Hamano wrote:\n>> David Turner <dturner@twopensource.com> writes:\n>> \n>> > On Thu, 2015-07-09 at 10:23 -0700, Junio C Hamano wrote:\n>> > <snip>\n>> >> If I were David and sending this v4 patch, it would have looked like\n>> >> this.\n>> >>\n>> >> -- >8 --\n>> >> \n>> >> From: David Turner <dturner@twopensource.com>\n>> >> Date: Tue, 7 Jul 2015 21:29:34 -0400\n>> >> Subject: [PATCH v4] log: add \"log.follow\" configuration variable\n>> >> \n>> >> People who work on projects with mostly linear history with frequent\n>> >> whole file renames may want to always use \"git log --follow\" when\n>> >> inspecting the life of the content that live in a single path.\n>> >> \n>> >> Teach the command to behave as if \"--follow\" was given from the\n>> >> command line when log.follow configuration variable is set *and*\n>> >> there is one (and only one) path on the command line.\n>> >\n>> >\n>> > Thanks.  That version is much better.\n>> \n>> No, thank _you_; we should be thanking you for helping us improve\n>> the system ;-)\n>\n> Do I need to re-send, or will you queue your version?\n\nI think I've already queued this version to my tree.\n\n... goes and looks ...\n\nYup, it is near 'next' and I'm planning to merge it down to 'next'\nand then to 'master' as time passes ;-)\n\nThanks.\n"}]}