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

Re: [PATCH] show changed tree objects with recursive git-diff-tree

From
Nicolas Pitre <nico@cam.org>
Date
May 23, 2005, 21:49 UTC
Message-ID
<Pine.LNX.4.62.0505231724270.16151@localhost.localdomain>
In-Reply-To
<Pine.LNX.4.58.0505202025480.2206@ppc970.osdl.org>
[catching up after a weekind away -- you guys have not been standing still]
On Fri, 20 May 2005, Linus Torvalds wrote:
Show 17 quoted lines
> On Fri, 20 May 2005, Junio C Hamano wrote:
> >
> > Although I do not have immediate objections to what it tries to
> > do, I have to think about the intent of the patch and its
> > ramifications.
> 
> I really think it should be a totally separate flag to enable showing the
> sub-trees if the tree-blobification wants this.
> 
> In fact, I can pretty much _guarantee_ that the patch as posted is the
> wrong thing to do: it will do horribly wrong things for things like
> 
> 	git-whatchanged arch/i386/kernel/head.S
> 
> (but I haven't tried it - try it yourself. The correct output for the 
> kernel archive is just a single commit, and a single blob change in that 
> commit).

OK. What about the following patch? It outputs changed tree objects only if -p nor -v nor -s is specified, i.e. whenever what is really wanted is output of what changed at the object level. This makes it more coherent with the non-recursive output as well. Checked that git-diff-helper doesn't get confused.

If a separate flag is really needed, then consistency dictates that the non recursive output should provide output for tree objects only when that flag is given as well, which makes the non recursive output rather useless in most cases. And IMHO this is just too much burden for little benefit (the extra flag not the recursive tree object output).

=====

This patch includes output of modified tree objects to recursive output, just like non recursive output already does. When -v, -s or -p is specified then the recursive output supresses modified tree objects since they don't make much sense in that case.

Signed-off-by: Nicolas Pitre <nico@cam.org>
diff --git a/diff-tree.c b/diff-tree.c
--- a/diff-tree.c
+++ b/diff-tree.c
@@ -127,6 +127,8 @@ static int compare_tree_entry(void *tree
 	if (recursive && S_ISDIR(mode1)) {
 		int retval;
 		char *newbase = malloc_base(base, path1, pathlen1);
+		if (!silent && !verbose_header && !show_root_diff)
+			diff_change(mode1, mode2, sha1, sha2, base, path1);
 		retval = diff_tree_sha1(sha1, sha2, newbase);
 		free(newbase);
 		return retval;
Previous: Linus TorvaldsNext: Junio C Hamano
Message 4 of 9 in “show changed tree objects with recursive git-diff-tree”
  1. show changed tree objects with recursive git-diff-treeNicolas Pitre, May 21, 2005
  2. Junio C HamanoMay 21, 2005
  3. Linus TorvaldsMay 21, 2005
  4. Nicolas PitreMay 23, 2005
  5. Junio C HamanoMay 25, 2005
  6. Nicolas PitreMay 25, 2005
  7. Junio C HamanoMay 25, 2005
  8. Linus TorvaldsMay 21, 2005
  9. Junio C HamanoMay 21, 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.