Re: [PATCH 3/8] tree-diff: no need to manually verify that there is no mode change for a path

2014-02-03 Thread Junio C Hamano
Kirill Smelkov  writes:

> Because if there is, such two tree entries would never be compared as
> equal - the code in base_name_compare() explicitly compares modes, if
> there is a change for dir bit, even for equal paths, entries would
> compare as different.

OK.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/8] tree-diff: no need to manually verify that there is no mode change for a path

2014-02-03 Thread Kirill Smelkov
Because if there is, such two tree entries would never be compared as
equal - the code in base_name_compare() explicitly compares modes, if
there is a change for dir bit, even for equal paths, entries would
compare as different.

The code I'm removing here is from 2005 April 262e82b4 (Fix diff-tree
recursion), which pre-dates base_name_compare() introduction in 958ba6c9
(Introduce "base_name_compare()" helper function) by a month.

Signed-off-by: Kirill Smelkov 
---
 tree-diff.c | 14 --
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/tree-diff.c b/tree-diff.c
index 456660c..c2c67fd 100644
--- a/tree-diff.c
+++ b/tree-diff.c
@@ -23,6 +23,10 @@ static int compare_tree_entry(struct tree_desc *t1, struct 
tree_desc *t2,
 
pathlen1 = tree_entry_len(&t1->entry);
pathlen2 = tree_entry_len(&t2->entry);
+
+   /* NOTE files and directories *always* compare differently, event when
+* having the same name.
+*/
cmp = base_name_compare(path1, pathlen1, mode1, path2, pathlen2, mode2);
if (cmp < 0) {
show_entry(opt, "-", t1, base);
@@ -35,16 +39,6 @@ static int compare_tree_entry(struct tree_desc *t1, struct 
tree_desc *t2,
if (!DIFF_OPT_TST(opt, FIND_COPIES_HARDER) && !hashcmp(sha1, sha2) && 
mode1 == mode2)
return 0;
 
-   /*
-* If the filemode has changed to/from a directory from/to a regular
-* file, we need to consider it a remove and an add.
-*/
-   if (S_ISDIR(mode1) != S_ISDIR(mode2)) {
-   show_entry(opt, "-", t1, base);
-   show_entry(opt, "+", t2, base);
-   return 0;
-   }
-
strbuf_add(base, path1, pathlen1);
if (DIFF_OPT_TST(opt, RECURSIVE) && S_ISDIR(mode1)) {
if (DIFF_OPT_TST(opt, TREE_IN_RECURSIVE)) {
-- 
1.9.rc1.181.g641f458

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html