Re: "git-diff-tree -R A B == git-diff-tree B A"?

From: Linus Torvalds <torvalds@osdl.org>
Date: 2005-05-21 01:20:21
On Fri, 20 May 2005, Junio C Hamano wrote:
>
> I was preparing a set of tests for diff family because I wanted
> to have something that catches screwups I am going to inflict
> upon them during the coming couple of days.  One of the tests
> accidentally found out that the above is not true in the current
> implementation.  Just an excerpt of relevant lines [*1*]:
> 
> $ git-diff-tree -r $tree_B $tree_A
> 
> +100644 blob 7e426fb079479fd67f6d81f984e4ec649a44bc25 AN
> +100644 blob 68a6d8b91da11045cf4aa3a5ab9f2a781c701249 DF/DF
> -100644 blob 71420ab81e254145d26d6fc0cddee64c1acd4787 DF
> -100644 blob 3c4d8de5fbad08572bab8e10eef8dbb264cf0231 DM
> 
> $ git-diff-tree -R $tree_A $tree_B
> 
> +100644 blob 7e426fb079479fd67f6d81f984e4ec649a44bc25 AN
> -100644 blob 71420ab81e254145d26d6fc0cddee64c1acd4787 DF
> +100644 blob 68a6d8b91da11045cf4aa3a5ab9f2a781c701249 DF/DF
> -100644 blob 3c4d8de5fbad08572bab8e10eef8dbb264cf0231 DM


Ahh.. "diff-tree" uses the wrong algorithm for selecting name ordering.

It thinks that "DF" and "DF/" sort equally because it just looks at the
name, not the type. So then, becuse the names sort the same, it will sort
them according to where they come from, and you get the behaviour you see.

It doesn't really matter, but you're right, I should fix it to be
consistent.

git-diff-cache and git-diff-files should automaticallu get it right thanks
to reading the whole tree, so it's likely just git-diff-tree that can get 
confused.

		Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Sat May 21 01:20:55 2005

This archive was generated by hypermail 2.1.8 : 2005-05-21 01:20:56 EST