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

[PATCH] Teach diff-tree to report unmodified paths for -C option.

From
Junio C Hamano <junkio@cox.net>
Date
May 21, 2005, 10:11 UTC
Message-ID
<7vpsvkj3bu.fsf_-_@assigned-by-dhcp.cox.net>
In-Reply-To
<7vfywgkj90.fsf_-_@assigned-by-dhcp.cox.net>

Linus, I have a bit of design issue that there is no way for the diff-core layer to affect the behaviour of the caller. It is not too big a problem with others, but for diff-tree the effect is prominent.

If you do this:
  ./git-rev-list HEAD | ./git-diff-tree -Sdiff-tree-helper --stdin -M

you will get many uninteresting headers from git-diff-tree, until you hit something "interesting". What I want to see in this case is probably to omit the header and commit information diff-tree usually gives while "pickaxe" filters everything out (i.e. nothing interesting to report), and teach diff-tree to do the header thing only when diff-core says there is something interesting. So far I haven't found a good way to do this.

Another useless comment. For obvious reasons, there is nothing we can do about the diff-helper to add "the other half of copy detection information", because what it can tell diff-core is limited to its input, which usually is just differences prepared by somebody else, and it cannot know anything about unchanged files. When I started pushing '-p' flag to diff-tree family, I remember that your reaction was neutral to moderately negative ("I'd tolerate, although I think it is redundant and you are not even generating diff yourself anyway" as opposed to "That's just great"). I think now you would thank me for shoving the diff interface into them ;-).

I did not touch diff-tree for full-scale -C option in the last series, but if you want to have it, it is easy.

This one is untested but it should just work (TM).
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
# - HEAD: Diff overhaul, adding the other half of copy detection.
# + (working tree)
diff --git a/diff-tree.c b/diff-tree.c
--- a/diff-tree.c
+++ b/diff-tree.c
@@ -117,7 +117,7 @@ static int compare_tree_entry(void *tree
 		show_file("+", tree2, size2, base);
 		return 1;
 	}
-	if (!memcmp(sha1, sha2, 20) && mode1 == mode2)
+	if (!memcmp(sha1, sha2, 20) && mode1 == mode2 && detect_rename < 2)
 		return 0;
 
 	/*
Previous: Junio C HamanoNext: Junio C Hamano
Message 27 of 43 in “Detect renames in diff family.”
  1. Detect renames in diff family.Junio C Hamano, May 19, 2005
  2. Linus TorvaldsMay 19, 2005
  3. Junio C HamanoMay 19, 2005
  4. Linus TorvaldsMay 19, 2005
  5. Nicolas PitreMay 19, 2005
  6. Junio C HamanoMay 19, 2005
  7. Nicolas PitreMay 19, 2005
  8. Junio C HamanoMay 19, 2005
  9. Nicolas PitreMay 19, 2005
  10. Junio C HamanoMay 19, 2005
  11. Linus TorvaldsMay 19, 2005
  12. Junio C HamanoMay 19, 2005
  13. Linus TorvaldsMay 20, 2005
  14. Junio C HamanoMay 20, 2005
  15. Junio C HamanoMay 19, 2005
  16. Junio C HamanoMay 19, 2005
  17. Linus TorvaldsMay 19, 2005
  18. Junio C HamanoMay 19, 2005
  19. H. Peter AnvinMay 19, 2005
  20. Joel BeckerMay 19, 2005
  21. Junio C HamanoMay 21, 2005
  22. 1/3 Diff overhaul, adding half of copy detection.Junio C Hamano, May 21, 2005
  23. 2/3 Introducing software archaeologist's tool "pickaxe".Junio C Hamano, May 21, 2005
  24. Constness fix for pickaxe option.Junio C Hamano, May 21, 2005
  25. Linus TorvaldsMay 21, 2005
  26. 3/3 Diff overhaul, adding the other half of copy detection.Junio C Hamano, May 21, 2005
  27. Teach diff-tree to report unmodified paths for -C option.Junio C Hamano, May 21, 2005
  28. Junio C HamanoMay 21, 2005
  29. Linus TorvaldsMay 21, 2005
  30. Junio C HamanoMay 21, 2005
  31. Linus TorvaldsMay 21, 2005
  32. Linus TorvaldsMay 21, 2005
  33. Linus TorvaldsMay 21, 2005
  34. Junio C HamanoMay 21, 2005
  35. Junio C HamanoMay 24, 2005
  36. Linus TorvaldsMay 24, 2005
  37. Junio C HamanoMay 24, 2005
  38. Linus TorvaldsMay 24, 2005
  39. Junio C HamanoMay 24, 2005
  40. Detect copies harder in diff-tree.Junio C Hamano, May 26, 2005
  41. Junio C HamanoMay 21, 2005
  42. Tweak diffcore-rename heuristics.Junio C Hamano, May 21, 2005
  43. Now I think I am done with diff...Junio C Hamano, May 23, 2005

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.