git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 1/2] patch-ids: turn off rename detection

From
Jeff King <peff@peff.net>
Date
Sep 9, 2016, 20:34 UTC
Message-ID
<20160909203434.lkwhkaouk2ckwi6z@sigill.intra.peff.net>
In-Reply-To
<20160909203406.5j5pmom442yoe4su@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 this does have one user-visible impact: the prerequisite patches listed by "format-patch --base". There may be some confusion between different versions of git as older ones will enable renames, but newer ones will not. However, this was already a problem, as people with different settings for the "diff.renames" config would get different results. After this patch, everyone should get the same results, regardless of their config.

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.161.gdb62534
Previous: Jeff KingNext: Jeff King
Message 26 of 35 in “more patch-id speedups”
  1. 0/2 more patch-id speedupsJeff King, Sep 7, 2016
  2. 1/2 patch-ids: turn off rename detectionJeff King, Sep 7, 2016
  3. Johannes SchindelinSep 7, 2016
  4. 2/2 patch-ids: skip merge commitsJeff King, Sep 7, 2016
  5. Johannes SchindelinSep 7, 2016
  6. Jeff KingSep 7, 2016
  7. Jeff KingSep 7, 2016
  8. Johannes SchindelinSep 7, 2016
  9. Jeff KingSep 7, 2016
  10. 0/3 patch-id for mergesJeff King, Sep 7, 2016
  11. 1/3 patch-ids: turn off rename detectionJeff King, Sep 7, 2016
  12. Jacob KellerSep 7, 2016
  13. 2/3 diff_flush_patch_id: stop returning error resultJeff King, Sep 7, 2016
  14. Ramsay JonesSep 8, 2016
  15. Jeff KingSep 8, 2016
  16. Johannes SchindelinSep 9, 2016
  17. Jeff KingSep 9, 2016
  18. Johannes SchindelinSep 9, 2016
  19. Jeff KingSep 9, 2016
  20. 3/3 patch-ids: use commit sha1 as patch-id for merge commitsJeff King, Sep 7, 2016
  21. Jacob KellerSep 7, 2016
  22. Jeff KingSep 7, 2016
  23. Josh TriplettSep 7, 2016
  24. Jeff KingSep 8, 2016
  25. 0/2 patch-id for mergesJeff King, Sep 9, 2016
  26. 1/2 patch-ids: turn off rename detectionJeff King, Sep 9, 2016
  27. 2/2 patch-ids: define patch-id of merge commits as "null"Jeff King, Sep 9, 2016
  28. Jeff KingSep 9, 2016
  29. Junio C HamanoSep 9, 2016
  30. Junio C HamanoSep 9, 2016
  31. Jeff KingSep 12, 2016
  32. Junio C HamanoSep 12, 2016
  33. Jeff KingSep 12, 2016
  34. Junio C HamanoSep 12, 2016
  35. Johannes SchindelinSep 25, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.