[PATCH 0/5] activate diff.renames by default

classic Classic list List threaded Threaded
29 messages Options
12
Reply | Threaded
Open this post in threaded view
|

[PATCH 0/5] activate diff.renames by default

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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/5] Documentation/diff-config: fix description of diff.renames

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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH 2/5] t4001-diff-rename: wrap file creations in a test

Matthieu Moy
In reply to this post by Matthieu Moy
Signed-off-by: Matthieu Moy <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH 3/5] t: add tests for diff.renames (true/false/unset)

Matthieu Moy
In reply to this post by 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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH 4/5] log: introduce init_log_defaults()

Matthieu Moy
In reply to this post by 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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH 5/5] diff: activate diff.renames by default

Matthieu Moy
In reply to this post by 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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 0/5] activate diff.renames by default

Junio C Hamano
In reply to this post by Matthieu Moy
Matthieu Moy <[hidden email]> 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(-)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 0/5] activate diff.renames by default

Matthieu Moy-2
Junio C Hamano <[hidden email]> writes:

> Matthieu Moy <[hidden email]> 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/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 5/5] diff: activate diff.renames by default

Junio C Hamano
In reply to this post by Matthieu Moy
Matthieu Moy <[hidden email]> 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.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 5/5] diff: activate diff.renames by default

Matthieu Moy-2
Junio C Hamano <[hidden email]> writes:

> Matthieu Moy <[hidden email]> 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/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 0/5] activate diff.renames by default

Junio C Hamano
In reply to this post by Matthieu Moy-2
Matthieu Moy <[hidden email]> writes:

> Junio C Hamano <[hidden email]> writes:
>
>> Matthieu Moy <[hidden email]> 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 ;-)

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 2/5] t4001-diff-rename: wrap file creations in a test

Jeff King
In reply to this post by Matthieu Moy
On Tue, Feb 23, 2016 at 06:44:55PM +0100, Matthieu Moy wrote:

> Signed-off-by: Matthieu Moy <[hidden email]>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 1/5] Documentation/diff-config: fix description of diff.renames

Jeff King
In reply to this post by Matthieu Moy
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 <[hidden email]>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 5/5] diff: activate diff.renames by default

Jeff King
In reply to this post by Matthieu Moy
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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 2/5] t4001-diff-rename: wrap file creations in a test

Matthieu Moy-2
In reply to this post by Jeff King
Jeff King <[hidden email]> writes:

> On Tue, Feb 23, 2016 at 06:44:55PM +0100, Matthieu Moy wrote:
>
>> Signed-off-by: Matthieu Moy <[hidden email]>
>> ---
>>  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/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 5/5] diff: activate diff.renames by default

Matthieu Moy-2
In reply to this post by Jeff King
Jeff King <[hidden email]> 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/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH v2 0/5] activate diff.renames by default

Matthieu Moy
In reply to this post by 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH v2 1/5] Documentation/diff-config: fix description of diff.renames

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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH v2 2/5] t4001-diff-rename: wrap file creations in a test

Matthieu Moy
In reply to this post by Matthieu Moy
Signed-off-by: Matthieu Moy <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|

[PATCH v2 3/5] t: add tests for diff.renames (true/false/unset)

Matthieu Moy
In reply to this post by 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 <[hidden email]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
12