git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] activate diff.renames by default
@ 2016-02-23 17:44 Matthieu Moy
  2016-02-23 17:44 ` [PATCH 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
                   ` (6 more replies)
  0 siblings, 7 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 17:44 UTC (permalink / raw)
  To: git; +Cc: Matthieu Moy

I have always wondered why diff.renames was not activated by default.
I've had it to true in my configuration for 9 years, and I've been
teaching newbies to set it for a while without issue. I think it's
time to activate it by default, but please let me know if I missed a
reason to keep it to false.

In any case, the first 3 patches are useful cleanups.

Matthieu Moy (5):
  Documentation/diff-config: fix description of diff.renames
  t4001-diff-rename: wrap file creations in a test
  t: add tests for diff.renames (true/false/unset)
  log: introduce init_log_defaults()
  diff: activate diff.renames by default

 Documentation/diff-config.txt |  7 ++--
 builtin/commit.c              |  1 +
 builtin/diff.c                |  1 +
 builtin/log.c                 | 16 ++++---
 builtin/merge.c               |  1 +
 diff.c                        |  5 +++
 diff.h                        |  1 +
 t/t4001-diff-rename.sh        | 97 +++++++++++++++++++++++++++++++++++--------
 t/t4013-diff-various.sh       |  2 +
 t/t4014-format-patch.sh       |  4 +-
 t/t4047-diff-dirstat.sh       |  3 +-
 t/t4202-log.sh                |  8 ++--
 12 files changed, 114 insertions(+), 32 deletions(-)

-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 1/5] Documentation/diff-config: fix description of diff.renames
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
@ 2016-02-23 17:44 ` Matthieu Moy
  2016-02-24 10:27   ` Jeff King
  2016-02-25 17:27   ` Felipe Gonçalves Assis
  2016-02-23 17:44 ` [PATCH 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 17:44 UTC (permalink / raw)
  To: git; +Cc: Matthieu Moy

The description was misleading, since "set to any boolean value" include
"set to false", and diff.renames=false does not enable basic detection,
but actually disables it.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 Documentation/diff-config.txt | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index 6eaa452..1acd203 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -108,9 +108,10 @@ diff.renameLimit::
 	detection; equivalent to the 'git diff' option '-l'.
 
 diff.renames::
-	Tells Git to detect renames.  If set to any boolean value, it
-	will enable basic rename detection.  If set to "copies" or
-	"copy", it will detect copies, as well.
+	Whether and how Git detects renames.  If set to "false",
+	rename detection is disabled. If set to "true", basic rename
+	detection is enable.  If set to "copies" or "copy", Git will
+	detect copies, as well.  Defaults to false.
 
 diff.suppressBlankEmpty::
 	A boolean to inhibit the standard behavior of printing a space
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 2/5] t4001-diff-rename: wrap file creations in a test
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
  2016-02-23 17:44 ` [PATCH 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
@ 2016-02-23 17:44 ` Matthieu Moy
  2016-02-24 10:25   ` Jeff King
  2016-02-23 17:44 ` [PATCH 3/5] t: add tests for diff.renames (true/false/unset) Matthieu Moy
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 17:44 UTC (permalink / raw)
  To: git; +Cc: Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t4001-diff-rename.sh | 38 +++++++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index 2f327b7..bfb364c 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -9,7 +9,9 @@ test_description='Test rename detection in diff engine.
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/diff-lib.sh
 
-echo >path0 'Line 1
+test_expect_success 'setup' '
+	cat >path0 <<\EOF &&
+Line 1
 Line 2
 Line 3
 Line 4
@@ -24,6 +26,23 @@ Line 12
 Line 13
 Line 14
 Line 15
+EOF
+	cat >expected <<\EOF
+diff --git a/path0 b/path1
+rename from path0
+rename to path1
+--- a/path0
++++ b/path1
+@@ -8,7 +8,7 @@ Line 7
+ Line 8
+ Line 9
+ Line 10
+-line 11
++Line 11
+ Line 12
+ Line 13
+ Line 14
+EOF
 '
 
 test_expect_success \
@@ -43,22 +62,7 @@ test_expect_success \
 test_expect_success \
     'git diff-index -p -M after rename and editing.' \
     'git diff-index -p -M $tree >current'
-cat >expected <<\EOF
-diff --git a/path0 b/path1
-rename from path0
-rename to path1
---- a/path0
-+++ b/path1
-@@ -8,7 +8,7 @@ Line 7
- Line 8
- Line 9
- Line 10
--line 11
-+Line 11
- Line 12
- Line 13
- Line 14
-EOF
+
 
 test_expect_success \
     'validate the output.' \
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 3/5] t: add tests for diff.renames (true/false/unset)
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
  2016-02-23 17:44 ` [PATCH 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
  2016-02-23 17:44 ` [PATCH 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
@ 2016-02-23 17:44 ` Matthieu Moy
  2016-02-23 17:44 ` [PATCH 4/5] log: introduce init_log_defaults() Matthieu Moy
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 17:44 UTC (permalink / raw)
  To: git; +Cc: Matthieu Moy

The underlying machinery is well-tested, but the configuration option
itself was tested only in t3400-rebase.sh.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t4001-diff-rename.sh | 61 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index bfb364c..6844906 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -27,7 +27,7 @@ Line 13
 Line 14
 Line 15
 EOF
-	cat >expected <<\EOF
+	cat >expected <<\EOF &&
 diff --git a/path0 b/path1
 rename from path0
 rename to path1
@@ -43,6 +43,50 @@ rename to path1
  Line 13
  Line 14
 EOF
+	cat >no-rename <<\EOF
+diff --git a/path0 b/path0
+deleted file mode 100644
+index fdbec44..0000000
+--- a/path0
++++ /dev/null
+@@ -1,15 +0,0 @@
+-Line 1
+-Line 2
+-Line 3
+-Line 4
+-Line 5
+-Line 6
+-Line 7
+-Line 8
+-Line 9
+-Line 10
+-line 11
+-Line 12
+-Line 13
+-Line 14
+-Line 15
+diff --git a/path1 b/path1
+new file mode 100644
+index 0000000..752c50e
+--- /dev/null
++++ b/path1
+@@ -0,0 +1,15 @@
++Line 1
++Line 2
++Line 3
++Line 4
++Line 5
++Line 6
++Line 7
++Line 8
++Line 9
++Line 10
++Line 11
++Line 12
++Line 13
++Line 14
++Line 15
+EOF
 '
 
 test_expect_success \
@@ -68,6 +112,21 @@ test_expect_success \
     'validate the output.' \
     'compare_diff_patch current expected'
 
+test_expect_success 'test diff.renames=true' '
+	git -c diff.renames=true diff --cached $tree >current &&
+	compare_diff_patch current expected
+'
+
+test_expect_success 'test diff.renames=false' '
+	git -c diff.renames=false diff --cached $tree >current &&
+	compare_diff_patch current no-rename
+'
+
+test_expect_success 'test diff.renames unset' '
+	git diff --cached $tree >current &&
+	compare_diff_patch current no-rename
+'
+
 test_expect_success 'favour same basenames over different ones' '
 	cp path1 another-path &&
 	git add another-path &&
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 4/5] log: introduce init_log_defaults()
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
                   ` (2 preceding siblings ...)
  2016-02-23 17:44 ` [PATCH 3/5] t: add tests for diff.renames (true/false/unset) Matthieu Moy
@ 2016-02-23 17:44 ` Matthieu Moy
  2016-02-23 17:44 ` [PATCH 5/5] diff: activate diff.renames by default Matthieu Moy
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 17:44 UTC (permalink / raw)
  To: git; +Cc: Matthieu Moy

This is currently a wrapper around init_grep_defaults(), but will allow
adding more initialization in further patches.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 builtin/log.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/builtin/log.c b/builtin/log.c
index 0d738d6..7f96c64 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -100,6 +100,11 @@ static int log_line_range_callback(const struct option *option, const char *arg,
 	return 0;
 }
 
+static void init_log_defaults()
+{
+	init_grep_defaults();
+}
+
 static void cmd_log_init_defaults(struct rev_info *rev)
 {
 	if (fmt_pretty)
@@ -416,7 +421,7 @@ int cmd_whatchanged(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	struct setup_revision_opt opt;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	init_revisions(&rev, prefix);
@@ -527,7 +532,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)
 	struct pathspec match_all;
 	int i, count, ret = 0;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	memset(&match_all, 0, sizeof(match_all));
@@ -608,7 +613,7 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	struct setup_revision_opt opt;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	init_revisions(&rev, prefix);
@@ -647,7 +652,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	struct setup_revision_opt opt;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	init_revisions(&rev, prefix);
@@ -1280,7 +1285,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	extra_hdr.strdup_strings = 1;
 	extra_to.strdup_strings = 1;
 	extra_cc.strdup_strings = 1;
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_format_config, NULL);
 	init_revisions(&rev, prefix);
 	rev.commit_format = CMIT_FMT_EMAIL;
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 5/5] diff: activate diff.renames by default
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
                   ` (3 preceding siblings ...)
  2016-02-23 17:44 ` [PATCH 4/5] log: introduce init_log_defaults() Matthieu Moy
@ 2016-02-23 17:44 ` Matthieu Moy
  2016-02-23 21:01   ` Junio C Hamano
  2016-02-24 10:42   ` Jeff King
  2016-02-23 19:17 ` [PATCH 0/5] " Junio C Hamano
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
  6 siblings, 2 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 17:44 UTC (permalink / raw)
  To: git; +Cc: Matthieu Moy

Rename detection is a very convenient feature, and new users shouldn't
have to dig in the documentation to benefit from it.

Potential objections to activating rename detection are that it
sometimes fail, and it is sometimes slow. But rename detection is
already activated by default in several cases like "git status" and "git
merge", so activating diff.renames does not fundamentally change the
situation. When the rename detection fails, it now fails consistently
between "git diff" and "git status".

This setting does not affect plumbing commands, hence well-written
scripts will not be affected.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 Documentation/diff-config.txt | 2 +-
 builtin/commit.c              | 1 +
 builtin/diff.c                | 1 +
 builtin/log.c                 | 1 +
 builtin/merge.c               | 1 +
 diff.c                        | 5 +++++
 diff.h                        | 1 +
 t/t4001-diff-rename.sh        | 2 +-
 t/t4013-diff-various.sh       | 2 ++
 t/t4014-format-patch.sh       | 4 ++--
 t/t4047-diff-dirstat.sh       | 3 ++-
 t/t4202-log.sh                | 8 ++++----
 12 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index 1acd203..fdf5a79 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -111,7 +111,7 @@ diff.renames::
 	Whether and how Git detects renames.  If set to "false",
 	rename detection is disabled. If set to "true", basic rename
 	detection is enable.  If set to "copies" or "copy", Git will
-	detect copies, as well.  Defaults to false.
+	detect copies, as well.  Defaults to true.
 
 diff.suppressBlankEmpty::
 	A boolean to inhibit the standard behavior of printing a space
diff --git a/builtin/commit.c b/builtin/commit.c
index b3bd2d4..3cb4843 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -186,6 +186,7 @@ static void status_init_config(struct wt_status *s, config_fn_t fn)
 	gitmodules_config();
 	git_config(fn, s);
 	determine_whence(s);
+	git_diff_ui_default_config();
 	s->hints = advice_status_hints; /* must come after git_config() */
 }
 
diff --git a/builtin/diff.c b/builtin/diff.c
index 52c98a9..8bd1fd5 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -318,6 +318,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 
 	if (!no_index)
 		gitmodules_config();
+	git_diff_ui_default_config();
 	git_config(git_diff_ui_config, NULL);
 
 	init_revisions(&rev, prefix);
diff --git a/builtin/log.c b/builtin/log.c
index 7f96c64..6e34df3 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -103,6 +103,7 @@ static int log_line_range_callback(const struct option *option, const char *arg,
 static void init_log_defaults()
 {
 	init_grep_defaults();
+	git_diff_ui_default_config();
 }
 
 static void cmd_log_init_defaults(struct rev_info *rev)
diff --git a/builtin/merge.c b/builtin/merge.c
index b98a348..cf297d4 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1187,6 +1187,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 	else
 		head_commit = lookup_commit_or_die(head_sha1, "HEAD");
 
+	git_diff_ui_default_config();
 	git_config(git_merge_config, NULL);
 
 	if (branch_mergeoptions)
diff --git a/diff.c b/diff.c
index 2136b69..d5db898 100644
--- a/diff.c
+++ b/diff.c
@@ -168,6 +168,11 @@ long parse_algorithm_value(const char *value)
  * never be affected by the setting of diff.renames
  * the user happens to have in the configuration file.
  */
+void git_diff_ui_default_config()
+{
+	diff_detect_rename_default = 1;
+}
+
 int git_diff_ui_config(const char *var, const char *value, void *cb)
 {
 	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
diff --git a/diff.h b/diff.h
index 70b2d70..75686d5 100644
--- a/diff.h
+++ b/diff.h
@@ -266,6 +266,7 @@ extern int parse_long_opt(const char *opt, const char **argv,
 			 const char **optarg);
 
 extern int git_diff_basic_config(const char *var, const char *value, void *cb);
+extern void git_diff_ui_default_config();
 extern int git_diff_ui_config(const char *var, const char *value, void *cb);
 extern void diff_setup(struct diff_options *);
 extern int diff_opt_parse(struct diff_options *, const char **, int, const char *);
diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index 6844906..15d99a3 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -124,7 +124,7 @@ test_expect_success 'test diff.renames=false' '
 
 test_expect_success 'test diff.renames unset' '
 	git diff --cached $tree >current &&
-	compare_diff_patch current no-rename
+	compare_diff_patch current expected
 '
 
 test_expect_success 'favour same basenames over different ones' '
diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
index 6ec6072..94ef500 100755
--- a/t/t4013-diff-various.sh
+++ b/t/t4013-diff-various.sh
@@ -90,6 +90,8 @@ test_expect_success setup '
 	git commit -m "Rearranged lines in dir/sub" &&
 	git checkout master &&
 
+	git config diff.renames false &&
+
 	git show-branch
 '
 
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 3b99434..eed2981 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -549,7 +549,7 @@ test_expect_success 'cover-letter inherits diff options' '
 
 	git mv file foo &&
 	git commit -m foo &&
-	git format-patch --cover-letter -1 &&
+	git format-patch --no-renames --cover-letter -1 &&
 	check_patch 0000-cover-letter.patch &&
 	! grep "file => foo .* 0 *\$" 0000-cover-letter.patch &&
 	git format-patch --cover-letter -1 -M &&
@@ -703,7 +703,7 @@ test_expect_success 'options no longer allowed for format-patch' '
 
 test_expect_success 'format-patch --numstat should produce a patch' '
 	git format-patch --numstat --stdout master..side > output &&
-	test 6 = $(grep "^diff --git a/" output | wc -l)'
+	test 5 = $(grep "^diff --git a/" output | wc -l)'
 
 test_expect_success 'format-patch -- <path>' '
 	git format-patch master..side -- file 2>error &&
diff --git a/t/t4047-diff-dirstat.sh b/t/t4047-diff-dirstat.sh
index 3b8b792..447a8ff 100755
--- a/t/t4047-diff-dirstat.sh
+++ b/t/t4047-diff-dirstat.sh
@@ -248,7 +248,8 @@ EOF
 	git rm -r src/move/unchanged &&
 	git rm -r src/move/changed &&
 	git rm -r src/move/rearranged &&
-	git commit -m "changes"
+	git commit -m "changes" &&
+	git config diff.renames false
 '
 
 cat <<EOF >expect_diff_stat
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index cb82eb7..128ba93 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -101,8 +101,8 @@ test_expect_success 'oneline' '
 
 test_expect_success 'diff-filter=A' '
 
-	git log --pretty="format:%s" --diff-filter=A HEAD > actual &&
-	git log --pretty="format:%s" --diff-filter A HEAD > actual-separate &&
+	git log --no-renames --pretty="format:%s" --diff-filter=A HEAD > actual &&
+	git log --no-renames --pretty="format:%s" --diff-filter A HEAD > actual-separate &&
 	printf "fifth\nfourth\nthird\ninitial" > expect &&
 	test_cmp expect actual &&
 	test_cmp expect actual-separate
@@ -119,7 +119,7 @@ test_expect_success 'diff-filter=M' '
 
 test_expect_success 'diff-filter=D' '
 
-	actual=$(git log --pretty="format:%s" --diff-filter=D HEAD) &&
+	actual=$(git log --no-renames --pretty="format:%s" --diff-filter=D HEAD) &&
 	expect=$(echo sixth ; echo third) &&
 	verbose test "$actual" = "$expect"
 
@@ -848,7 +848,7 @@ sanitize_output () {
 }
 
 test_expect_success 'log --graph with diff and stats' '
-	git log --graph --pretty=short --stat -p >actual &&
+	git log --no-renames --graph --pretty=short --stat -p >actual &&
 	sanitize_output >actual.sanitized <actual &&
 	test_i18ncmp expect actual.sanitized
 '
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [PATCH 0/5] activate diff.renames by default
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
                   ` (4 preceding siblings ...)
  2016-02-23 17:44 ` [PATCH 5/5] diff: activate diff.renames by default Matthieu Moy
@ 2016-02-23 19:17 ` Junio C Hamano
  2016-02-23 20:46   ` Matthieu Moy
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
  6 siblings, 1 reply; 29+ messages in thread
From: Junio C Hamano @ 2016-02-23 19:17 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> I have always wondered why diff.renames was not activated by default.
> I've had it to true in my configuration for 9 years, and I've been
> teaching newbies to set it for a while without issue. I think it's
> time to activate it by default, but please let me know if I missed a
> reason to keep it to false.
>
> In any case, the first 3 patches are useful cleanups.

It's a long time coming since I heard "I love how I can just say
'oh, keep in mind that we might want to..' and 24 hours later you
did it." [*1*]

I can hardly be an impartial judge for this series, though.

[Reference]

*1* http://thread.gmane.org/gmane.comp.version-control.git/3541/focus=3702

> Matthieu Moy (5):
>   Documentation/diff-config: fix description of diff.renames
>   t4001-diff-rename: wrap file creations in a test
>   t: add tests for diff.renames (true/false/unset)
>   log: introduce init_log_defaults()
>   diff: activate diff.renames by default
>
>  Documentation/diff-config.txt |  7 ++--
>  builtin/commit.c              |  1 +
>  builtin/diff.c                |  1 +
>  builtin/log.c                 | 16 ++++---
>  builtin/merge.c               |  1 +
>  diff.c                        |  5 +++
>  diff.h                        |  1 +
>  t/t4001-diff-rename.sh        | 97 +++++++++++++++++++++++++++++++++++--------
>  t/t4013-diff-various.sh       |  2 +
>  t/t4014-format-patch.sh       |  4 +-
>  t/t4047-diff-dirstat.sh       |  3 +-
>  t/t4202-log.sh                |  8 ++--
>  12 files changed, 114 insertions(+), 32 deletions(-)

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 0/5] activate diff.renames by default
  2016-02-23 19:17 ` [PATCH 0/5] " Junio C Hamano
@ 2016-02-23 20:46   ` Matthieu Moy
  2016-02-23 21:40     ` Junio C Hamano
  0 siblings, 1 reply; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 20:46 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Matthieu Moy <Matthieu.Moy@imag.fr> writes:
>
>> I have always wondered why diff.renames was not activated by default.
>> I've had it to true in my configuration for 9 years, and I've been
>> teaching newbies to set it for a while without issue. I think it's
>> time to activate it by default, but please let me know if I missed a
>> reason to keep it to false.
>>
>> In any case, the first 3 patches are useful cleanups.
>
> It's a long time coming since I heard "I love how I can just say
> 'oh, keep in mind that we might want to..' and 24 hours later you
> did it." [*1*]
>
> I can hardly be an impartial judge for this series, though.
>
> [Reference]
>
> *1* http://thread.gmane.org/gmane.comp.version-control.git/3541/focus=3702

I guess there's another reference needed to fully understand your
message, and I'm not sure I have it right. Are you refering to the
"merge-recursive: test rename threshold option" discussion?

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 5/5] diff: activate diff.renames by default
  2016-02-23 17:44 ` [PATCH 5/5] diff: activate diff.renames by default Matthieu Moy
@ 2016-02-23 21:01   ` Junio C Hamano
  2016-02-23 21:11     ` Matthieu Moy
  2016-02-24 10:42   ` Jeff King
  1 sibling, 1 reply; 29+ messages in thread
From: Junio C Hamano @ 2016-02-23 21:01 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> diff --git a/builtin/log.c b/builtin/log.c
> index 7f96c64..6e34df3 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -103,6 +103,7 @@ static int log_line_range_callback(const struct option *option, const char *arg,
>  static void init_log_defaults()
>  {
>  	init_grep_defaults();
> +	git_diff_ui_default_config();
>  }

Why isn't the new function called init_diff_ui_defaults()?

> diff --git a/diff.c b/diff.c
> index 2136b69..d5db898 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -168,6 +168,11 @@ long parse_algorithm_value(const char *value)
>   * never be affected by the setting of diff.renames
>   * the user happens to have in the configuration file.
>   */
> +void git_diff_ui_default_config()

s/()/(void)/;  same for the declaration in the header file.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 5/5] diff: activate diff.renames by default
  2016-02-23 21:01   ` Junio C Hamano
@ 2016-02-23 21:11     ` Matthieu Moy
  0 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-23 21:11 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Matthieu Moy <Matthieu.Moy@imag.fr> writes:
>
>> diff --git a/builtin/log.c b/builtin/log.c
>> index 7f96c64..6e34df3 100644
>> --- a/builtin/log.c
>> +++ b/builtin/log.c
>> @@ -103,6 +103,7 @@ static int log_line_range_callback(const struct option *option, const char *arg,
>>  static void init_log_defaults()
>>  {
>>  	init_grep_defaults();
>> +	git_diff_ui_default_config();
>>  }
>
> Why isn't the new function called init_diff_ui_defaults()?

Indeed, that's a better name. I changed it.

>> diff --git a/diff.c b/diff.c
>> index 2136b69..d5db898 100644
>> --- a/diff.c
>> +++ b/diff.c
>> @@ -168,6 +168,11 @@ long parse_algorithm_value(const char *value)
>>   * never be affected by the setting of diff.renames
>>   * the user happens to have in the configuration file.
>>   */
>> +void git_diff_ui_default_config()
>
> s/()/(void)/;  same for the declaration in the header file.

Fixed. 'doing too much C++ and not enough C ;-).

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 0/5] activate diff.renames by default
  2016-02-23 20:46   ` Matthieu Moy
@ 2016-02-23 21:40     ` Junio C Hamano
  0 siblings, 0 replies; 29+ messages in thread
From: Junio C Hamano @ 2016-02-23 21:40 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:

> Junio C Hamano <gitster@pobox.com> writes:
>
>> Matthieu Moy <Matthieu.Moy@imag.fr> writes:
>>
>>> I have always wondered why diff.renames was not activated by default.
>>> I've had it to true in my configuration for 9 years, and I've been
>>> teaching newbies to set it for a while without issue. I think it's
>>> time to activate it by default, but please let me know if I missed a
>>> reason to keep it to false.
>>>
>>> In any case, the first 3 patches are useful cleanups.
>>
>> It's a long time coming since I heard "I love how I can just say
>> 'oh, keep in mind that we might want to..' and 24 hours later you
>> did it." [*1*]
>>
>> I can hardly be an impartial judge for this series, though.
>>
>> [Reference]
>>
>> *1* http://thread.gmane.org/gmane.comp.version-control.git/3541/focus=3702
>
> I guess there's another reference needed to fully understand your
> message, and I'm not sure I have it right. Are you refering to the
> "merge-recursive: test rename threshold option" discussion?

Not at all.

I was just mentioning that it would at last be a major achievement,
if this can safely turned on by default for everybody, after having
invented the machinery and the feature looooong time ago ;-)

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 2/5] t4001-diff-rename: wrap file creations in a test
  2016-02-23 17:44 ` [PATCH 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
@ 2016-02-24 10:25   ` Jeff King
  2016-02-24 13:16     ` Matthieu Moy
  0 siblings, 1 reply; 29+ messages in thread
From: Jeff King @ 2016-02-24 10:25 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

On Tue, Feb 23, 2016 at 06:44:55PM +0100, Matthieu Moy wrote:

> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
>  t/t4001-diff-rename.sh | 38 +++++++++++++++++++++-----------------
>  1 file changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
> index 2f327b7..bfb364c 100755
> --- a/t/t4001-diff-rename.sh
> +++ b/t/t4001-diff-rename.sh
> @@ -9,7 +9,9 @@ test_description='Test rename detection in diff engine.
>  . ./test-lib.sh
>  . "$TEST_DIRECTORY"/diff-lib.sh
>  
> -echo >path0 'Line 1
> +test_expect_success 'setup' '
> +	cat >path0 <<\EOF &&
> +Line 1
>  Line 2
>  Line 3
>  Line 4

Should we use "<<-" here (and elsewhere) to indent the sample lines? It
makes your diff bigger, but I think the end result is much easier to
read.

-Peff

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 1/5] Documentation/diff-config: fix description of diff.renames
  2016-02-23 17:44 ` [PATCH 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
@ 2016-02-24 10:27   ` Jeff King
  2016-02-25 17:27   ` Felipe Gonçalves Assis
  1 sibling, 0 replies; 29+ messages in thread
From: Jeff King @ 2016-02-24 10:27 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

On Tue, Feb 23, 2016 at 06:44:54PM +0100, Matthieu Moy wrote:

> The description was misleading, since "set to any boolean value" include
> "set to false", and diff.renames=false does not enable basic detection,
> but actually disables it.
> 
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
>  Documentation/diff-config.txt | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
> index 6eaa452..1acd203 100644
> --- a/Documentation/diff-config.txt
> +++ b/Documentation/diff-config.txt
> @@ -108,9 +108,10 @@ diff.renameLimit::
>  	detection; equivalent to the 'git diff' option '-l'.
>  
>  diff.renames::
> -	Tells Git to detect renames.  If set to any boolean value, it
> -	will enable basic rename detection.  If set to "copies" or
> -	"copy", it will detect copies, as well.
> +	Whether and how Git detects renames.  If set to "false",
> +	rename detection is disabled. If set to "true", basic rename
> +	detection is enable.  If set to "copies" or "copy", Git will
> +	detect copies, as well.  Defaults to false.

Looks OK to me. I thought we had "copies-harder" or something, but I
double-checked and we don't. I doubt anybody would want to set it
anyway, as it can be quite expensive.

-Peff

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 5/5] diff: activate diff.renames by default
  2016-02-23 17:44 ` [PATCH 5/5] diff: activate diff.renames by default Matthieu Moy
  2016-02-23 21:01   ` Junio C Hamano
@ 2016-02-24 10:42   ` Jeff King
  2016-02-25  8:54     ` Matthieu Moy
  1 sibling, 1 reply; 29+ messages in thread
From: Jeff King @ 2016-02-24 10:42 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

On Tue, Feb 23, 2016 at 06:44:58PM +0100, Matthieu Moy wrote:

> diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
> index 1acd203..fdf5a79 100644
> --- a/Documentation/diff-config.txt
> +++ b/Documentation/diff-config.txt
> @@ -111,7 +111,7 @@ diff.renames::
>  	Whether and how Git detects renames.  If set to "false",
>  	rename detection is disabled. If set to "true", basic rename
>  	detection is enable.  If set to "copies" or "copy", Git will
> -	detect copies, as well.  Defaults to false.
> +	detect copies, as well.  Defaults to true.

I wonder if we need to talk about plumbing versus porcelain here, as it
does not default to true for diff-tree, for example. But I guess that is
already the case (even setting it to true yourself does not affect
diff-tree).

-Peff

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 2/5] t4001-diff-rename: wrap file creations in a test
  2016-02-24 10:25   ` Jeff King
@ 2016-02-24 13:16     ` Matthieu Moy
  0 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-24 13:16 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> On Tue, Feb 23, 2016 at 06:44:55PM +0100, Matthieu Moy wrote:
>
>> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
>> ---
>>  t/t4001-diff-rename.sh | 38 +++++++++++++++++++++-----------------
>>  1 file changed, 21 insertions(+), 17 deletions(-)
>> 
>> diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
>> index 2f327b7..bfb364c 100755
>> --- a/t/t4001-diff-rename.sh
>> +++ b/t/t4001-diff-rename.sh
>> @@ -9,7 +9,9 @@ test_description='Test rename detection in diff engine.
>>  . ./test-lib.sh
>>  . "$TEST_DIRECTORY"/diff-lib.sh
>>  
>> -echo >path0 'Line 1
>> +test_expect_success 'setup' '
>> +	cat >path0 <<\EOF &&
>> +Line 1
>>  Line 2
>>  Line 3
>>  Line 4
>
> Should we use "<<-" here (and elsewhere) to indent the sample lines?

I did not use it because I thought it would strip the leading space
(' '), but actually it strips only tabs so we can definitely use it.

I changed it to <<- and pushed it here:
https://github.com/moy/git/commits/set-diff-renames

I'll resend later.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 5/5] diff: activate diff.renames by default
  2016-02-24 10:42   ` Jeff King
@ 2016-02-25  8:54     ` Matthieu Moy
  0 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:54 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> On Tue, Feb 23, 2016 at 06:44:58PM +0100, Matthieu Moy wrote:
>
>> diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
>> index 1acd203..fdf5a79 100644
>> --- a/Documentation/diff-config.txt
>> +++ b/Documentation/diff-config.txt
>> @@ -111,7 +111,7 @@ diff.renames::
>>  	Whether and how Git detects renames.  If set to "false",
>>  	rename detection is disabled. If set to "true", basic rename
>>  	detection is enable.  If set to "copies" or "copy", Git will
>> -	detect copies, as well.  Defaults to false.
>> +	detect copies, as well.  Defaults to true.
>
> I wonder if we need to talk about plumbing versus porcelain here, as it
> does not default to true for diff-tree, for example. But I guess that is
> already the case (even setting it to true yourself does not affect
> diff-tree).

Yes, it was already the case. But it doesn't harm to document it while
we're there. I've added this in v2:

        Note that this
	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
	linkgit:git-log[1], and not lower level commands such as
	linkgit:git-diff-files[1].

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 0/5] activate diff.renames by default
  2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
                   ` (5 preceding siblings ...)
  2016-02-23 19:17 ` [PATCH 0/5] " Junio C Hamano
@ 2016-02-25  8:59 ` Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
                     ` (4 more replies)
  6 siblings, 5 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:59 UTC (permalink / raw)
  To: gitster; +Cc: git, peff, Matthieu Moy

Remarks on v1 applied:

* document that diff.renames applies only to porcelain

* use <<- instead of << in tests

* rename git_diff_ui_default_config to init_diff_ui_defaults

* f() -> f(void)

Interdiff follows:

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index fdf5a79..69389ae 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -111,7 +111,10 @@ diff.renames::
 	Whether and how Git detects renames.  If set to "false",
 	rename detection is disabled. If set to "true", basic rename
 	detection is enable.  If set to "copies" or "copy", Git will
-	detect copies, as well.  Defaults to true.
+	detect copies, as well.  Defaults to true.  Note that this
+	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
+	linkgit:git-log[1], and not lower level commands such as
+	linkgit:git-diff-files[1].
 
 diff.suppressBlankEmpty::
 	A boolean to inhibit the standard behavior of printing a space
diff --git a/builtin/commit.c b/builtin/commit.c
index 3cb4843..109742e 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -186,7 +186,7 @@ static void status_init_config(struct wt_status *s, config_fn_t fn)
 	gitmodules_config();
 	git_config(fn, s);
 	determine_whence(s);
-	git_diff_ui_default_config();
+	init_diff_ui_defaults();
 	s->hints = advice_status_hints; /* must come after git_config() */
 }
 
diff --git a/builtin/diff.c b/builtin/diff.c
index 8bd1fd5..343c6b8 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -318,7 +318,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 
 	if (!no_index)
 		gitmodules_config();
-	git_diff_ui_default_config();
+	init_diff_ui_defaults();
 	git_config(git_diff_ui_config, NULL);
 
 	init_revisions(&rev, prefix);
diff --git a/builtin/log.c b/builtin/log.c
index 6e34df3..c05a5f6 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -103,7 +103,7 @@ static int log_line_range_callback(const struct option *option, const char *arg,
 static void init_log_defaults()
 {
 	init_grep_defaults();
-	git_diff_ui_default_config();
+	init_diff_ui_defaults();
 }
 
 static void cmd_log_init_defaults(struct rev_info *rev)
diff --git a/builtin/merge.c b/builtin/merge.c
index cf297d4..4cb4f6a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1187,7 +1187,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 	else
 		head_commit = lookup_commit_or_die(head_sha1, "HEAD");
 
-	git_diff_ui_default_config();
+	init_diff_ui_defaults();
 	git_config(git_merge_config, NULL);
 
 	if (branch_mergeoptions)
diff --git a/diff.c b/diff.c
index d5db898..b4dea07 100644
--- a/diff.c
+++ b/diff.c
@@ -168,7 +168,7 @@ long parse_algorithm_value(const char *value)
  * never be affected by the setting of diff.renames
  * the user happens to have in the configuration file.
  */
-void git_diff_ui_default_config()
+void init_diff_ui_defaults(void)
 {
 	diff_detect_rename_default = 1;
 }
diff --git a/diff.h b/diff.h
index 75686d5..0a3ce86 100644
--- a/diff.h
+++ b/diff.h
@@ -266,7 +266,7 @@ extern int parse_long_opt(const char *opt, const char **argv,
 			 const char **optarg);
 
 extern int git_diff_basic_config(const char *var, const char *value, void *cb);
-extern void git_diff_ui_default_config();
+extern void init_diff_ui_defaults(void);
 extern int git_diff_ui_config(const char *var, const char *value, void *cb);
 extern void diff_setup(struct diff_options *);
 extern int diff_opt_parse(struct diff_options *, const char **, int, const char *);
diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index 15d99a3..c7e58b6 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -10,83 +10,83 @@ test_description='Test rename detection in diff engine.
 . "$TEST_DIRECTORY"/diff-lib.sh
 
 test_expect_success 'setup' '
-	cat >path0 <<\EOF &&
-Line 1
-Line 2
-Line 3
-Line 4
-Line 5
-Line 6
-Line 7
-Line 8
-Line 9
-Line 10
-line 11
-Line 12
-Line 13
-Line 14
-Line 15
-EOF
-	cat >expected <<\EOF &&
-diff --git a/path0 b/path1
-rename from path0
-rename to path1
---- a/path0
-+++ b/path1
-@@ -8,7 +8,7 @@ Line 7
- Line 8
- Line 9
- Line 10
--line 11
-+Line 11
- Line 12
- Line 13
- Line 14
-EOF
-	cat >no-rename <<\EOF
-diff --git a/path0 b/path0
-deleted file mode 100644
-index fdbec44..0000000
---- a/path0
-+++ /dev/null
-@@ -1,15 +0,0 @@
--Line 1
--Line 2
--Line 3
--Line 4
--Line 5
--Line 6
--Line 7
--Line 8
--Line 9
--Line 10
--line 11
--Line 12
--Line 13
--Line 14
--Line 15
-diff --git a/path1 b/path1
-new file mode 100644
-index 0000000..752c50e
---- /dev/null
-+++ b/path1
-@@ -0,0 +1,15 @@
-+Line 1
-+Line 2
-+Line 3
-+Line 4
-+Line 5
-+Line 6
-+Line 7
-+Line 8
-+Line 9
-+Line 10
-+Line 11
-+Line 12
-+Line 13
-+Line 14
-+Line 15
-EOF
+	cat >path0 <<-\EOF &&
+	Line 1
+	Line 2
+	Line 3
+	Line 4
+	Line 5
+	Line 6
+	Line 7
+	Line 8
+	Line 9
+	Line 10
+	line 11
+	Line 12
+	Line 13
+	Line 14
+	Line 15
+	EOF
+	cat >expected <<-\EOF &&
+	diff --git a/path0 b/path1
+	rename from path0
+	rename to path1
+	--- a/path0
+	+++ b/path1
+	@@ -8,7 +8,7 @@ Line 7
+	 Line 8
+	 Line 9
+	 Line 10
+	-line 11
+	+Line 11
+	 Line 12
+	 Line 13
+	 Line 14
+	EOF
+	cat >no-rename <<-\EOF
+	diff --git a/path0 b/path0
+	deleted file mode 100644
+	index fdbec44..0000000
+	--- a/path0
+	+++ /dev/null
+	@@ -1,15 +0,0 @@
+	-Line 1
+	-Line 2
+	-Line 3
+	-Line 4
+	-Line 5
+	-Line 6
+	-Line 7
+	-Line 8
+	-Line 9
+	-Line 10
+	-line 11
+	-Line 12
+	-Line 13
+	-Line 14
+	-Line 15
+	diff --git a/path1 b/path1
+	new file mode 100644
+	index 0000000..752c50e
+	--- /dev/null
+	+++ b/path1
+	@@ -0,0 +1,15 @@
+	+Line 1
+	+Line 2
+	+Line 3
+	+Line 4
+	+Line 5
+	+Line 6
+	+Line 7
+	+Line 8
+	+Line 9
+	+Line 10
+	+Line 11
+	+Line 12
+	+Line 13
+	+Line 14
+	+Line 15
+	EOF
 '
 
 test_expect_success \




Matthieu Moy (5):
  Documentation/diff-config: fix description of diff.renames
  t4001-diff-rename: wrap file creations in a test
  t: add tests for diff.renames (true/false/unset)
  log: introduce init_log_defaults()
  diff: activate diff.renames by default

 Documentation/diff-config.txt |  10 +++-
 builtin/commit.c              |   1 +
 builtin/diff.c                |   1 +
 builtin/log.c                 |  16 ++++--
 builtin/merge.c               |   1 +
 diff.c                        |   5 ++
 diff.h                        |   1 +
 t/t4001-diff-rename.sh        | 125 +++++++++++++++++++++++++++++++-----------
 t/t4013-diff-various.sh       |   2 +
 t/t4014-format-patch.sh       |   4 +-
 t/t4047-diff-dirstat.sh       |   3 +-
 t/t4202-log.sh                |   8 +--
 12 files changed, 131 insertions(+), 46 deletions(-)

-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
@ 2016-02-25  8:59   ` Matthieu Moy
  2016-02-25 17:37     ` [PATCH v2.1] " Matthieu Moy
  2016-02-25 17:53     ` [PATCH v2 1/5] " Junio C Hamano
  2016-02-25  8:59   ` [PATCH v2 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
                     ` (3 subsequent siblings)
  4 siblings, 2 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:59 UTC (permalink / raw)
  To: gitster; +Cc: git, peff, Matthieu Moy

The description was misleading, since "set to any boolean value" include
"set to false", and diff.renames=false does not enable basic detection,
but actually disables it. Also, document that diff.renames only affects
Porcelain.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 Documentation/diff-config.txt | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index 6eaa452..40e5de9 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -108,9 +108,13 @@ diff.renameLimit::
 	detection; equivalent to the 'git diff' option '-l'.
 
 diff.renames::
-	Tells Git to detect renames.  If set to any boolean value, it
-	will enable basic rename detection.  If set to "copies" or
-	"copy", it will detect copies, as well.
+	Whether and how Git detects renames.  If set to "false",
+	rename detection is disabled. If set to "true", basic rename
+	detection is enable.  If set to "copies" or "copy", Git will
+	detect copies, as well.  Defaults to false.  Note that this
+	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
+	linkgit:git-log[1], and not lower level commands such as
+	linkgit:git-diff-files[1].
 
 diff.suppressBlankEmpty::
 	A boolean to inhibit the standard behavior of printing a space
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v2 2/5] t4001-diff-rename: wrap file creations in a test
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
@ 2016-02-25  8:59   ` Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 3/5] t: add tests for diff.renames (true/false/unset) Matthieu Moy
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:59 UTC (permalink / raw)
  To: gitster; +Cc: git, peff, Matthieu Moy

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t4001-diff-rename.sh | 66 ++++++++++++++++++++++++++------------------------
 1 file changed, 35 insertions(+), 31 deletions(-)

diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index 2f327b7..06b8828 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -9,21 +9,40 @@ test_description='Test rename detection in diff engine.
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/diff-lib.sh
 
-echo >path0 'Line 1
-Line 2
-Line 3
-Line 4
-Line 5
-Line 6
-Line 7
-Line 8
-Line 9
-Line 10
-line 11
-Line 12
-Line 13
-Line 14
-Line 15
+test_expect_success 'setup' '
+	cat >path0 <<-\EOF &&
+	Line 1
+	Line 2
+	Line 3
+	Line 4
+	Line 5
+	Line 6
+	Line 7
+	Line 8
+	Line 9
+	Line 10
+	line 11
+	Line 12
+	Line 13
+	Line 14
+	Line 15
+	EOF
+	cat >expected <<-\EOF
+	diff --git a/path0 b/path1
+	rename from path0
+	rename to path1
+	--- a/path0
+	+++ b/path1
+	@@ -8,7 +8,7 @@ Line 7
+	 Line 8
+	 Line 9
+	 Line 10
+	-line 11
+	+Line 11
+	 Line 12
+	 Line 13
+	 Line 14
+	EOF
 '
 
 test_expect_success \
@@ -43,22 +62,7 @@ test_expect_success \
 test_expect_success \
     'git diff-index -p -M after rename and editing.' \
     'git diff-index -p -M $tree >current'
-cat >expected <<\EOF
-diff --git a/path0 b/path1
-rename from path0
-rename to path1
---- a/path0
-+++ b/path1
-@@ -8,7 +8,7 @@ Line 7
- Line 8
- Line 9
- Line 10
--line 11
-+Line 11
- Line 12
- Line 13
- Line 14
-EOF
+
 
 test_expect_success \
     'validate the output.' \
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v2 3/5] t: add tests for diff.renames (true/false/unset)
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
@ 2016-02-25  8:59   ` Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 4/5] log: introduce init_log_defaults() Matthieu Moy
  2016-02-25  8:59   ` [PATCH v2 5/5] diff: activate diff.renames by default Matthieu Moy
  4 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:59 UTC (permalink / raw)
  To: gitster; +Cc: git, peff, Matthieu Moy

The underlying machinery is well-tested, but the configuration option
itself was tested only in t3400-rebase.sh.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t4001-diff-rename.sh | 61 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index 06b8828..f5239b5 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -27,7 +27,7 @@ test_expect_success 'setup' '
 	Line 14
 	Line 15
 	EOF
-	cat >expected <<-\EOF
+	cat >expected <<-\EOF &&
 	diff --git a/path0 b/path1
 	rename from path0
 	rename to path1
@@ -43,6 +43,50 @@ test_expect_success 'setup' '
 	 Line 13
 	 Line 14
 	EOF
+	cat >no-rename <<-\EOF
+	diff --git a/path0 b/path0
+	deleted file mode 100644
+	index fdbec44..0000000
+	--- a/path0
+	+++ /dev/null
+	@@ -1,15 +0,0 @@
+	-Line 1
+	-Line 2
+	-Line 3
+	-Line 4
+	-Line 5
+	-Line 6
+	-Line 7
+	-Line 8
+	-Line 9
+	-Line 10
+	-line 11
+	-Line 12
+	-Line 13
+	-Line 14
+	-Line 15
+	diff --git a/path1 b/path1
+	new file mode 100644
+	index 0000000..752c50e
+	--- /dev/null
+	+++ b/path1
+	@@ -0,0 +1,15 @@
+	+Line 1
+	+Line 2
+	+Line 3
+	+Line 4
+	+Line 5
+	+Line 6
+	+Line 7
+	+Line 8
+	+Line 9
+	+Line 10
+	+Line 11
+	+Line 12
+	+Line 13
+	+Line 14
+	+Line 15
+	EOF
 '
 
 test_expect_success \
@@ -68,6 +112,21 @@ test_expect_success \
     'validate the output.' \
     'compare_diff_patch current expected'
 
+test_expect_success 'test diff.renames=true' '
+	git -c diff.renames=true diff --cached $tree >current &&
+	compare_diff_patch current expected
+'
+
+test_expect_success 'test diff.renames=false' '
+	git -c diff.renames=false diff --cached $tree >current &&
+	compare_diff_patch current no-rename
+'
+
+test_expect_success 'test diff.renames unset' '
+	git diff --cached $tree >current &&
+	compare_diff_patch current no-rename
+'
+
 test_expect_success 'favour same basenames over different ones' '
 	cp path1 another-path &&
 	git add another-path &&
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v2 4/5] log: introduce init_log_defaults()
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
                     ` (2 preceding siblings ...)
  2016-02-25  8:59   ` [PATCH v2 3/5] t: add tests for diff.renames (true/false/unset) Matthieu Moy
@ 2016-02-25  8:59   ` Matthieu Moy
  2016-02-25 19:31     ` Junio C Hamano
  2016-02-25  8:59   ` [PATCH v2 5/5] diff: activate diff.renames by default Matthieu Moy
  4 siblings, 1 reply; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:59 UTC (permalink / raw)
  To: gitster; +Cc: git, peff, Matthieu Moy

This is currently a wrapper around init_grep_defaults(), but will allow
adding more initialization in further patches.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 builtin/log.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/builtin/log.c b/builtin/log.c
index 0d738d6..7f96c64 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -100,6 +100,11 @@ static int log_line_range_callback(const struct option *option, const char *arg,
 	return 0;
 }
 
+static void init_log_defaults()
+{
+	init_grep_defaults();
+}
+
 static void cmd_log_init_defaults(struct rev_info *rev)
 {
 	if (fmt_pretty)
@@ -416,7 +421,7 @@ int cmd_whatchanged(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	struct setup_revision_opt opt;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	init_revisions(&rev, prefix);
@@ -527,7 +532,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)
 	struct pathspec match_all;
 	int i, count, ret = 0;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	memset(&match_all, 0, sizeof(match_all));
@@ -608,7 +613,7 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	struct setup_revision_opt opt;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	init_revisions(&rev, prefix);
@@ -647,7 +652,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	struct setup_revision_opt opt;
 
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_log_config, NULL);
 
 	init_revisions(&rev, prefix);
@@ -1280,7 +1285,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	extra_hdr.strdup_strings = 1;
 	extra_to.strdup_strings = 1;
 	extra_cc.strdup_strings = 1;
-	init_grep_defaults();
+	init_log_defaults();
 	git_config(git_format_config, NULL);
 	init_revisions(&rev, prefix);
 	rev.commit_format = CMIT_FMT_EMAIL;
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v2 5/5] diff: activate diff.renames by default
  2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
                     ` (3 preceding siblings ...)
  2016-02-25  8:59   ` [PATCH v2 4/5] log: introduce init_log_defaults() Matthieu Moy
@ 2016-02-25  8:59   ` Matthieu Moy
  2016-02-25 17:52     ` Junio C Hamano
  4 siblings, 1 reply; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25  8:59 UTC (permalink / raw)
  To: gitster; +Cc: git, peff, Matthieu Moy

Rename detection is a very convenient feature, and new users shouldn't
have to dig in the documentation to benefit from it.

Potential objections to activating rename detection are that it
sometimes fail, and it is sometimes slow. But rename detection is
already activated by default in several cases like "git status" and "git
merge", so activating diff.renames does not fundamentally change the
situation. When the rename detection fails, it now fails consistently
between "git diff" and "git status".

This setting does not affect plumbing commands, hence well-written
scripts will not be affected.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 Documentation/diff-config.txt | 2 +-
 builtin/commit.c              | 1 +
 builtin/diff.c                | 1 +
 builtin/log.c                 | 1 +
 builtin/merge.c               | 1 +
 diff.c                        | 5 +++++
 diff.h                        | 1 +
 t/t4001-diff-rename.sh        | 2 +-
 t/t4013-diff-various.sh       | 2 ++
 t/t4014-format-patch.sh       | 4 ++--
 t/t4047-diff-dirstat.sh       | 3 ++-
 t/t4202-log.sh                | 8 ++++----
 12 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index 40e5de9..69389ae 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -111,7 +111,7 @@ diff.renames::
 	Whether and how Git detects renames.  If set to "false",
 	rename detection is disabled. If set to "true", basic rename
 	detection is enable.  If set to "copies" or "copy", Git will
-	detect copies, as well.  Defaults to false.  Note that this
+	detect copies, as well.  Defaults to true.  Note that this
 	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
 	linkgit:git-log[1], and not lower level commands such as
 	linkgit:git-diff-files[1].
diff --git a/builtin/commit.c b/builtin/commit.c
index b3bd2d4..109742e 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -186,6 +186,7 @@ static void status_init_config(struct wt_status *s, config_fn_t fn)
 	gitmodules_config();
 	git_config(fn, s);
 	determine_whence(s);
+	init_diff_ui_defaults();
 	s->hints = advice_status_hints; /* must come after git_config() */
 }
 
diff --git a/builtin/diff.c b/builtin/diff.c
index 52c98a9..343c6b8 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -318,6 +318,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 
 	if (!no_index)
 		gitmodules_config();
+	init_diff_ui_defaults();
 	git_config(git_diff_ui_config, NULL);
 
 	init_revisions(&rev, prefix);
diff --git a/builtin/log.c b/builtin/log.c
index 7f96c64..c05a5f6 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -103,6 +103,7 @@ static int log_line_range_callback(const struct option *option, const char *arg,
 static void init_log_defaults()
 {
 	init_grep_defaults();
+	init_diff_ui_defaults();
 }
 
 static void cmd_log_init_defaults(struct rev_info *rev)
diff --git a/builtin/merge.c b/builtin/merge.c
index b98a348..4cb4f6a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1187,6 +1187,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 	else
 		head_commit = lookup_commit_or_die(head_sha1, "HEAD");
 
+	init_diff_ui_defaults();
 	git_config(git_merge_config, NULL);
 
 	if (branch_mergeoptions)
diff --git a/diff.c b/diff.c
index 2136b69..b4dea07 100644
--- a/diff.c
+++ b/diff.c
@@ -168,6 +168,11 @@ long parse_algorithm_value(const char *value)
  * never be affected by the setting of diff.renames
  * the user happens to have in the configuration file.
  */
+void init_diff_ui_defaults(void)
+{
+	diff_detect_rename_default = 1;
+}
+
 int git_diff_ui_config(const char *var, const char *value, void *cb)
 {
 	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
diff --git a/diff.h b/diff.h
index 70b2d70..0a3ce86 100644
--- a/diff.h
+++ b/diff.h
@@ -266,6 +266,7 @@ extern int parse_long_opt(const char *opt, const char **argv,
 			 const char **optarg);
 
 extern int git_diff_basic_config(const char *var, const char *value, void *cb);
+extern void init_diff_ui_defaults(void);
 extern int git_diff_ui_config(const char *var, const char *value, void *cb);
 extern void diff_setup(struct diff_options *);
 extern int diff_opt_parse(struct diff_options *, const char **, int, const char *);
diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index f5239b5..c7e58b6 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -124,7 +124,7 @@ test_expect_success 'test diff.renames=false' '
 
 test_expect_success 'test diff.renames unset' '
 	git diff --cached $tree >current &&
-	compare_diff_patch current no-rename
+	compare_diff_patch current expected
 '
 
 test_expect_success 'favour same basenames over different ones' '
diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
index 6ec6072..94ef500 100755
--- a/t/t4013-diff-various.sh
+++ b/t/t4013-diff-various.sh
@@ -90,6 +90,8 @@ test_expect_success setup '
 	git commit -m "Rearranged lines in dir/sub" &&
 	git checkout master &&
 
+	git config diff.renames false &&
+
 	git show-branch
 '
 
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 3b99434..eed2981 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -549,7 +549,7 @@ test_expect_success 'cover-letter inherits diff options' '
 
 	git mv file foo &&
 	git commit -m foo &&
-	git format-patch --cover-letter -1 &&
+	git format-patch --no-renames --cover-letter -1 &&
 	check_patch 0000-cover-letter.patch &&
 	! grep "file => foo .* 0 *\$" 0000-cover-letter.patch &&
 	git format-patch --cover-letter -1 -M &&
@@ -703,7 +703,7 @@ test_expect_success 'options no longer allowed for format-patch' '
 
 test_expect_success 'format-patch --numstat should produce a patch' '
 	git format-patch --numstat --stdout master..side > output &&
-	test 6 = $(grep "^diff --git a/" output | wc -l)'
+	test 5 = $(grep "^diff --git a/" output | wc -l)'
 
 test_expect_success 'format-patch -- <path>' '
 	git format-patch master..side -- file 2>error &&
diff --git a/t/t4047-diff-dirstat.sh b/t/t4047-diff-dirstat.sh
index 3b8b792..447a8ff 100755
--- a/t/t4047-diff-dirstat.sh
+++ b/t/t4047-diff-dirstat.sh
@@ -248,7 +248,8 @@ EOF
 	git rm -r src/move/unchanged &&
 	git rm -r src/move/changed &&
 	git rm -r src/move/rearranged &&
-	git commit -m "changes"
+	git commit -m "changes" &&
+	git config diff.renames false
 '
 
 cat <<EOF >expect_diff_stat
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index cb82eb7..128ba93 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -101,8 +101,8 @@ test_expect_success 'oneline' '
 
 test_expect_success 'diff-filter=A' '
 
-	git log --pretty="format:%s" --diff-filter=A HEAD > actual &&
-	git log --pretty="format:%s" --diff-filter A HEAD > actual-separate &&
+	git log --no-renames --pretty="format:%s" --diff-filter=A HEAD > actual &&
+	git log --no-renames --pretty="format:%s" --diff-filter A HEAD > actual-separate &&
 	printf "fifth\nfourth\nthird\ninitial" > expect &&
 	test_cmp expect actual &&
 	test_cmp expect actual-separate
@@ -119,7 +119,7 @@ test_expect_success 'diff-filter=M' '
 
 test_expect_success 'diff-filter=D' '
 
-	actual=$(git log --pretty="format:%s" --diff-filter=D HEAD) &&
+	actual=$(git log --no-renames --pretty="format:%s" --diff-filter=D HEAD) &&
 	expect=$(echo sixth ; echo third) &&
 	verbose test "$actual" = "$expect"
 
@@ -848,7 +848,7 @@ sanitize_output () {
 }
 
 test_expect_success 'log --graph with diff and stats' '
-	git log --graph --pretty=short --stat -p >actual &&
+	git log --no-renames --graph --pretty=short --stat -p >actual &&
 	sanitize_output >actual.sanitized <actual &&
 	test_i18ncmp expect actual.sanitized
 '
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [PATCH 1/5] Documentation/diff-config: fix description of diff.renames
  2016-02-23 17:44 ` [PATCH 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
  2016-02-24 10:27   ` Jeff King
@ 2016-02-25 17:27   ` Felipe Gonçalves Assis
  2016-02-25 17:34     ` Matthieu Moy
  1 sibling, 1 reply; 29+ messages in thread
From: Felipe Gonçalves Assis @ 2016-02-25 17:27 UTC (permalink / raw)
  To: git

Matthieu Moy <Matthieu.Moy <at> imag.fr> writes:

>  diff.renames::
> -	Tells Git to detect renames.  If set to any boolean value, it
> -	will enable basic rename detection.  If set to "copies" or
> -	"copy", it will detect copies, as well.
> +	Whether and how Git detects renames.  If set to "false",
> +	rename detection is disabled. If set to "true", basic rename
> +	detection is enable.  If set to "copies" or "copy", Git will
> +	detect copies, as well.  Defaults to false.

Just a minor typo: s/enable/enabled/
Also, there is only one space between the second and third sentences.

Just in case you haven't already fixed that.

Regards,
Felipe

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH 1/5] Documentation/diff-config: fix description of diff.renames
  2016-02-25 17:27   ` Felipe Gonçalves Assis
@ 2016-02-25 17:34     ` Matthieu Moy
  0 siblings, 0 replies; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25 17:34 UTC (permalink / raw)
  To: Felipe Gonçalves Assis; +Cc: git

Felipe Gonçalves Assis <felipeg.assis@gmail.com> writes:

> Matthieu Moy <Matthieu.Moy <at> imag.fr> writes:
>
>>  diff.renames::
>> -	Tells Git to detect renames.  If set to any boolean value, it
>> -	will enable basic rename detection.  If set to "copies" or
>> -	"copy", it will detect copies, as well.
>> +	Whether and how Git detects renames.  If set to "false",
>> +	rename detection is disabled. If set to "true", basic rename
>> +	detection is enable.  If set to "copies" or "copy", Git will
>> +	detect copies, as well.  Defaults to false.
>
> Just a minor typo: s/enable/enabled/
> Also, there is only one space between the second and third sentences.

Indeed. Thanks.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2.1] Documentation/diff-config: fix description of diff.renames
  2016-02-25  8:59   ` [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
@ 2016-02-25 17:37     ` Matthieu Moy
  2016-02-25 18:18       ` Junio C Hamano
  2016-02-25 17:53     ` [PATCH v2 1/5] " Junio C Hamano
  1 sibling, 1 reply; 29+ messages in thread
From: Matthieu Moy @ 2016-02-25 17:37 UTC (permalink / raw)
  To: gitster; +Cc: git, Matthieu Moy

The description was misleading, since "set to any boolean value" include
"set to false", and diff.renames=false does not enable basic detection,
but actually disables it. Also, document that diff.renames only affects
Porcelain.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
Oops, trivial fix for typo noticed by Felipe. I'm resending just this
one in case Junio wants to pick the latest version but I can obviously
resend the whole if needed.

 Documentation/diff-config.txt | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
index 6eaa452..b5e9bda 100644
--- a/Documentation/diff-config.txt
+++ b/Documentation/diff-config.txt
@@ -108,9 +108,13 @@ diff.renameLimit::
 	detection; equivalent to the 'git diff' option '-l'.
 
 diff.renames::
-	Tells Git to detect renames.  If set to any boolean value, it
-	will enable basic rename detection.  If set to "copies" or
-	"copy", it will detect copies, as well.
+	Whether and how Git detects renames.  If set to "false",
+	rename detection is disabled.  If set to "true", basic rename
+	detection is enabled.  If set to "copies" or "copy", Git will
+	detect copies, as well.  Defaults to false.  Note that this
+	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
+	linkgit:git-log[1], and not lower level commands such as
+	linkgit:git-diff-files[1].
 
 diff.suppressBlankEmpty::
 	A boolean to inhibit the standard behavior of printing a space
-- 
2.7.2.334.g35ed2ae.dirty

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 5/5] diff: activate diff.renames by default
  2016-02-25  8:59   ` [PATCH v2 5/5] diff: activate diff.renames by default Matthieu Moy
@ 2016-02-25 17:52     ` Junio C Hamano
  0 siblings, 0 replies; 29+ messages in thread
From: Junio C Hamano @ 2016-02-25 17:52 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git, peff

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
> index 40e5de9..69389ae 100644
> --- a/Documentation/diff-config.txt
> +++ b/Documentation/diff-config.txt
> @@ -111,7 +111,7 @@ diff.renames::
>  	Whether and how Git detects renames.  If set to "false",
>  	rename detection is disabled. If set to "true", basic rename
>  	detection is enable.  If set to "copies" or "copy", Git will

Not a new issue, but s/enable/&d/, I think.

> -	detect copies, as well.  Defaults to false.  Note that this
> +	detect copies, as well.  Defaults to true.  Note that this
>  	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
>  	linkgit:git-log[1], and not lower level commands such as
>  	linkgit:git-diff-files[1].

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames
  2016-02-25  8:59   ` [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
  2016-02-25 17:37     ` [PATCH v2.1] " Matthieu Moy
@ 2016-02-25 17:53     ` Junio C Hamano
  1 sibling, 0 replies; 29+ messages in thread
From: Junio C Hamano @ 2016-02-25 17:53 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git, peff

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> The description was misleading, since "set to any boolean value" include
> "set to false", and diff.renames=false does not enable basic detection,
> but actually disables it. Also, document that diff.renames only affects
> Porcelain.
>
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
>  Documentation/diff-config.txt | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
> index 6eaa452..40e5de9 100644
> --- a/Documentation/diff-config.txt
> +++ b/Documentation/diff-config.txt
> @@ -108,9 +108,13 @@ diff.renameLimit::
>  	detection; equivalent to the 'git diff' option '-l'.
>  
>  diff.renames::
> -	Tells Git to detect renames.  If set to any boolean value, it
> -	will enable basic rename detection.  If set to "copies" or
> -	"copy", it will detect copies, as well.
> +	Whether and how Git detects renames.  If set to "false",
> +	rename detection is disabled. If set to "true", basic rename
> +	detection is enable.  If set to "copies" or "copy", Git will

Ahh, I earlier said "Not a new issue", but it is introduced here ;-)

I'll patch them up.  Thanks.


> +	detect copies, as well.  Defaults to false.  Note that this
> +	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
> +	linkgit:git-log[1], and not lower level commands such as
> +	linkgit:git-diff-files[1].
>  
>  diff.suppressBlankEmpty::
>  	A boolean to inhibit the standard behavior of printing a space

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2.1] Documentation/diff-config: fix description of diff.renames
  2016-02-25 17:37     ` [PATCH v2.1] " Matthieu Moy
@ 2016-02-25 18:18       ` Junio C Hamano
  0 siblings, 0 replies; 29+ messages in thread
From: Junio C Hamano @ 2016-02-25 18:18 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> The description was misleading, since "set to any boolean value" include
> "set to false", and diff.renames=false does not enable basic detection,
> but actually disables it. Also, document that diff.renames only affects
> Porcelain.
>
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
> Oops, trivial fix for typo noticed by Felipe. I'm resending just this
> one in case Junio wants to pick the latest version but I can obviously
> resend the whole if needed.

Heh, I guess people independently spotted the same typo nearly
simultaneously ;-)

I think I got this fixed locally (and adjusted the last one to
match).  Thanks.


>
>  Documentation/diff-config.txt | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt
> index 6eaa452..b5e9bda 100644
> --- a/Documentation/diff-config.txt
> +++ b/Documentation/diff-config.txt
> @@ -108,9 +108,13 @@ diff.renameLimit::
>  	detection; equivalent to the 'git diff' option '-l'.
>  
>  diff.renames::
> -	Tells Git to detect renames.  If set to any boolean value, it
> -	will enable basic rename detection.  If set to "copies" or
> -	"copy", it will detect copies, as well.
> +	Whether and how Git detects renames.  If set to "false",
> +	rename detection is disabled.  If set to "true", basic rename
> +	detection is enabled.  If set to "copies" or "copy", Git will
> +	detect copies, as well.  Defaults to false.  Note that this
> +	affects only 'git diff' Porcelain like linkgit:git-diff[1] and
> +	linkgit:git-log[1], and not lower level commands such as
> +	linkgit:git-diff-files[1].
>  
>  diff.suppressBlankEmpty::
>  	A boolean to inhibit the standard behavior of printing a space

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 4/5] log: introduce init_log_defaults()
  2016-02-25  8:59   ` [PATCH v2 4/5] log: introduce init_log_defaults() Matthieu Moy
@ 2016-02-25 19:31     ` Junio C Hamano
  0 siblings, 0 replies; 29+ messages in thread
From: Junio C Hamano @ 2016-02-25 19:31 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git, peff

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> This is currently a wrapper around init_grep_defaults(), but will allow
> adding more initialization in further patches.
>
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
>  builtin/log.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/builtin/log.c b/builtin/log.c
> index 0d738d6..7f96c64 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -100,6 +100,11 @@ static int log_line_range_callback(const struct option *option, const char *arg,
>  	return 0;
>  }
>  
> +static void init_log_defaults()

	static void init_log_defaults(void).

Locally patched up already; no need to resend.

Thanks.

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2016-02-25 19:32 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-23 17:44 [PATCH 0/5] activate diff.renames by default Matthieu Moy
2016-02-23 17:44 ` [PATCH 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
2016-02-24 10:27   ` Jeff King
2016-02-25 17:27   ` Felipe Gonçalves Assis
2016-02-25 17:34     ` Matthieu Moy
2016-02-23 17:44 ` [PATCH 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
2016-02-24 10:25   ` Jeff King
2016-02-24 13:16     ` Matthieu Moy
2016-02-23 17:44 ` [PATCH 3/5] t: add tests for diff.renames (true/false/unset) Matthieu Moy
2016-02-23 17:44 ` [PATCH 4/5] log: introduce init_log_defaults() Matthieu Moy
2016-02-23 17:44 ` [PATCH 5/5] diff: activate diff.renames by default Matthieu Moy
2016-02-23 21:01   ` Junio C Hamano
2016-02-23 21:11     ` Matthieu Moy
2016-02-24 10:42   ` Jeff King
2016-02-25  8:54     ` Matthieu Moy
2016-02-23 19:17 ` [PATCH 0/5] " Junio C Hamano
2016-02-23 20:46   ` Matthieu Moy
2016-02-23 21:40     ` Junio C Hamano
2016-02-25  8:59 ` [PATCH v2 " Matthieu Moy
2016-02-25  8:59   ` [PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames Matthieu Moy
2016-02-25 17:37     ` [PATCH v2.1] " Matthieu Moy
2016-02-25 18:18       ` Junio C Hamano
2016-02-25 17:53     ` [PATCH v2 1/5] " Junio C Hamano
2016-02-25  8:59   ` [PATCH v2 2/5] t4001-diff-rename: wrap file creations in a test Matthieu Moy
2016-02-25  8:59   ` [PATCH v2 3/5] t: add tests for diff.renames (true/false/unset) Matthieu Moy
2016-02-25  8:59   ` [PATCH v2 4/5] log: introduce init_log_defaults() Matthieu Moy
2016-02-25 19:31     ` Junio C Hamano
2016-02-25  8:59   ` [PATCH v2 5/5] diff: activate diff.renames by default Matthieu Moy
2016-02-25 17:52     ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).