* [PATCH v4 1/2] merge-recursive: option to disable renames
2016-02-17 3:15 [PATCH v4 0/2] merge-recursive: option to disable renames Felipe Gonçalves Assis
@ 2016-02-17 3:15 ` Felipe Gonçalves Assis
2016-02-17 3:15 ` [PATCH v4 2/2] merge-recursive: more consistent interface Felipe Gonçalves Assis
1 sibling, 0 replies; 3+ messages in thread
From: Felipe Gonçalves Assis @ 2016-02-17 3:15 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, gitster, sunshine,
Felipe Gonçalves Assis
The recursive strategy turns on rename detection by default. Add a
strategy option to disable rename detection even for exact renames.
Signed-off-by: Felipe Gonçalves Assis <felipegassis@gmail.com>
---
Documentation/merge-strategies.txt | 6 ++++++
merge-recursive.c | 7 +++++++
merge-recursive.h | 1 +
3 files changed, 14 insertions(+)
diff --git a/Documentation/merge-strategies.txt b/Documentation/merge-strategies.txt
index 7bbd19b..1a5e197 100644
--- a/Documentation/merge-strategies.txt
+++ b/Documentation/merge-strategies.txt
@@ -81,8 +81,14 @@ no-renormalize;;
Disables the `renormalize` option. This overrides the
`merge.renormalize` configuration variable.
+no-renames;;
+ Turn off rename detection.
+ See also linkgit:git-diff[1] `--no-renames`.
+
rename-threshold=<n>;;
Controls the similarity threshold used for rename detection.
+ Re-enables rename detection if disabled by a preceding
+ `no-renames`.
See also linkgit:git-diff[1] `-M`.
subtree[=<path>];;
diff --git a/merge-recursive.c b/merge-recursive.c
index 8eabde2..6dd0a11 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -482,6 +482,9 @@ static struct string_list *get_renames(struct merge_options *o,
struct diff_options opts;
renames = xcalloc(1, sizeof(struct string_list));
+ if (!o->detect_rename)
+ return renames;
+
diff_setup(&opts);
DIFF_OPT_SET(&opts, RECURSIVE);
DIFF_OPT_CLR(&opts, RENAME_EMPTY);
@@ -2039,6 +2042,7 @@ void init_merge_options(struct merge_options *o)
o->diff_rename_limit = -1;
o->merge_rename_limit = -1;
o->renormalize = 0;
+ o->detect_rename = 1;
merge_recursive_config(o);
if (getenv("GIT_MERGE_VERBOSITY"))
o->verbosity =
@@ -2088,9 +2092,12 @@ int parse_merge_opt(struct merge_options *o, const char *s)
o->renormalize = 1;
else if (!strcmp(s, "no-renormalize"))
o->renormalize = 0;
+ else if (!strcmp(s, "no-renames"))
+ o->detect_rename = 0;
else if (skip_prefix(s, "rename-threshold=", &arg)) {
if ((o->rename_score = parse_rename_score(&arg)) == -1 || *arg != 0)
return -1;
+ o->detect_rename = 1;
}
else
return -1;
diff --git a/merge-recursive.h b/merge-recursive.h
index 9e090a3..52f0201 100644
--- a/merge-recursive.h
+++ b/merge-recursive.h
@@ -17,6 +17,7 @@ struct merge_options {
unsigned renormalize : 1;
long xdl_opts;
int verbosity;
+ int detect_rename;
int diff_rename_limit;
int merge_rename_limit;
int rename_score;
--
2.7.1.289.ga0c045c
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v4 2/2] merge-recursive: more consistent interface
2016-02-17 3:15 [PATCH v4 0/2] merge-recursive: option to disable renames Felipe Gonçalves Assis
2016-02-17 3:15 ` [PATCH v4 1/2] " Felipe Gonçalves Assis
@ 2016-02-17 3:15 ` Felipe Gonçalves Assis
1 sibling, 0 replies; 3+ messages in thread
From: Felipe Gonçalves Assis @ 2016-02-17 3:15 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, gitster, sunshine,
Felipe Gonçalves Assis
Add strategy option find-renames, following git-diff interface. This
makes the option rename-threshold redundant.
Signed-off-by: Felipe Gonçalves Assis <felipegassis@gmail.com>
---
Documentation/merge-strategies.txt | 10 ++++++----
merge-recursive.c | 5 ++++-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/Documentation/merge-strategies.txt b/Documentation/merge-strategies.txt
index 1a5e197..ff359b6 100644
--- a/Documentation/merge-strategies.txt
+++ b/Documentation/merge-strategies.txt
@@ -85,11 +85,13 @@ no-renames;;
Turn off rename detection.
See also linkgit:git-diff[1] `--no-renames`.
+find-renames[=<n>];;
+ Turn on rename detection, optionally setting the the similarity
+ threshold. This is the default.
+ See also linkgit:git-diff[1] `--find-renames`.
+
rename-threshold=<n>;;
- Controls the similarity threshold used for rename detection.
- Re-enables rename detection if disabled by a preceding
- `no-renames`.
- See also linkgit:git-diff[1] `-M`.
+ Deprecated synonym for `find-renames=<n>`.
subtree[=<path>];;
This option is a more advanced form of 'subtree' strategy, where
diff --git a/merge-recursive.c b/merge-recursive.c
index 6dd0a11..700febd 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -2094,7 +2094,10 @@ int parse_merge_opt(struct merge_options *o, const char *s)
o->renormalize = 0;
else if (!strcmp(s, "no-renames"))
o->detect_rename = 0;
- else if (skip_prefix(s, "rename-threshold=", &arg)) {
+ else if (!strcmp(s, "find-renames"))
+ o->detect_rename = 1;
+ else if (skip_prefix(s, "find-renames=", &arg) ||
+ skip_prefix(s, "rename-threshold=", &arg)) {
if ((o->rename_score = parse_rename_score(&arg)) == -1 || *arg != 0)
return -1;
o->detect_rename = 1;
--
2.7.1.289.ga0c045c
^ permalink raw reply related [flat|nested] 3+ messages in thread