[PATCH 1/2] patch-ids: turn off rename detection
- From
Jeff King <peff@peff.net>
- Date
- Sep 7, 2016, 07:54 UTC
- Message-ID
- <20160907075411.cr67cbvmy7gxv2om@sigill.intra.peff.net>
- In-Reply-To
- <20160907075346.z6wtmqnfc6bsunjb@sigill.intra.peff.net>
The patch-id code may be running inside another porcelain like "git log" or "git format-patch", and therefore may have set diff_detect_rename_default, either via the diff-ui config, or by default since 5404c11 (diff: activate diff.renames by default, 2016-02-25). This is the case even if a command is run with `--no-renames`, as that is applied only to the diff-options used by the command itself.
Rename detection doesn't help the patch-id results. It _may_ actually hurt, as minor differences in the files that would be overlooked by patch-id's canonicalization might result in different renames (though I'd doubt that it ever comes up in practice).
But mostly it is just a waste of CPU to compute these renames.
Note that we don't have to worry about compatibility here. This patch disables renames just for the internal patch-id comparison run by "log --cherry-pick", etc. The user-visible "git patch-id" output depends on the patch that it is fed (so it is up to the diff generator to use --no-renames if they wish).
Signed-off-by: Jeff King <peff@peff.net> --- patch-ids.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/patch-ids.c b/patch-ids.c index 082412a..77e4663 100644 --- a/patch-ids.c +++ b/patch-ids.c @@ -45,6 +45,7 @@ int init_patch_ids(struct patch_ids *ids) { memset(ids, 0, sizeof(*ids)); diff_setup(&ids->diffopts); + ids->diffopts.detect_rename = 0; DIFF_OPT_SET(&ids->diffopts, RECURSIVE); diff_setup_done(&ids->diffopts); hashmap_init(&ids->patches, (hashmap_cmp_fn)patch_id_cmp, 256);
-- 2.10.0.rc2.154.gb4a4b8b