summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorEric Sunshine <sunshine@sunshineco.com>2018-07-22 09:57:16 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-08-14 21:27:05 (GMT)
commit8631bf1cdd7296684deebab2708761bfc8085fc2 (patch)
tree2aaa3d26b0a0f847db6b518c65a755ebda0fe63f /builtin
parent4ee99689410cf7275f21833779da89626eb6edd6 (diff)
downloadgit-8631bf1cdd7296684deebab2708761bfc8085fc2.zip
git-8631bf1cdd7296684deebab2708761bfc8085fc2.tar.gz
git-8631bf1cdd7296684deebab2708761bfc8085fc2.tar.bz2
format-patch: add --creation-factor tweak for --range-diff
When generating a range-diff, matching up commits between two version of a patch series involves heuristics, thus may give unexpected results. git-range-diff allows tweaking the heuristic via --creation-factor. Follow suit by accepting --creation-factor in combination with --range-diff when generating a range-diff for a cover-letter. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/log.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/builtin/log.c b/builtin/log.c
index 0dc17fe..05965a57 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1498,6 +1498,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
struct strbuf rdiff1 = STRBUF_INIT;
struct strbuf rdiff2 = STRBUF_INIT;
struct strbuf rdiff_title = STRBUF_INIT;
+ int creation_factor = -1;
const struct option builtin_format_patch_options[] = {
{ OPTION_CALLBACK, 'n', "numbered", &numbered, NULL,
@@ -1576,6 +1577,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
parse_opt_object_name),
OPT_STRING(0, "range-diff", &rdiff_prev, N_("refspec"),
N_("show changes against <refspec> in cover letter")),
+ OPT_INTEGER(0, "creation-factor", &creation_factor,
+ N_("percentage by which creation is weighted")),
OPT_END()
};
@@ -1808,6 +1811,11 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
_("Interdiff against v%d:"));
}
+ if (creation_factor < 0)
+ creation_factor = RANGE_DIFF_CREATION_FACTOR_DEFAULT;
+ else if (!rdiff_prev)
+ die(_("--creation-factor requires --range-diff"));
+
if (rdiff_prev) {
if (!cover_letter)
die(_("--range-diff requires --cover-letter"));
@@ -1816,7 +1824,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
origin, list[0]);
rev.rdiff1 = rdiff1.buf;
rev.rdiff2 = rdiff2.buf;
- rev.creation_factor = RANGE_DIFF_CREATION_FACTOR_DEFAULT;
+ rev.creation_factor = creation_factor;
rev.rdiff_title = diff_title(&rdiff_title, reroll_count,
_("Range-diff:"),
_("Range-diff against v%d:"));