Merge branch 'maint-1.7.7' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 18 Jan 2012 23:48:46 +0000 (15:48 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 18 Jan 2012 23:48:46 +0000 (15:48 -0800)
* maint-1.7.7:
Git 1.7.7.6
diff-index: enable recursive pathspec matching in unpack_trees

Conflicts:
GIT-VERSION-GEN

Documentation/RelNotes/1.7.7.6.txt
diff-lib.c
t/t4010-diff-pathspec.sh
index b8b86ebc61df5b63dd69c6b74be25128a57b0668..8df606d45273573b5c0d899096ca5de798e08a13 100644 (file)
@@ -8,6 +8,10 @@ Fixes since v1.7.7.5
    directory when two paths in question are in adjacent directories and
    the name of the one directory is a prefix of the other.
 
+ * A wildcard that matches deeper hierarchy given to the "diff-index" command,
+   e.g. "git diff-index HEAD -- '*.txt'", incorrectly reported additions of
+   matching files even when there is no change.
+
  * When producing a "thin pack" (primarily used in bundles and smart
    HTTP transfers) out of a fully packed repository, we unnecessarily
    avoided sending recent objects as a delta against objects we know
index 62f4cd94cfbc4d3fe9e46c84f318af6624349a48..fc0dff31b58c8bd6668de5c6396a93b31cc5729d 100644 (file)
@@ -469,6 +469,8 @@ static int diff_cache(struct rev_info *revs,
        opts.src_index = &the_index;
        opts.dst_index = NULL;
        opts.pathspec = &revs->diffopt.pathspec;
+       opts.pathspec->recursive = 1;
+       opts.pathspec->max_depth = -1;
 
        init_tree_desc(&t, tree->buffer, tree->size);
        return unpack_trees(1, &t, &opts);
index fbc8cd8f05f4debeb30b935c1b1db86e94e49f0e..af5134b70c6b4898aa652907d58191d45aa30ac4 100755 (executable)
@@ -47,6 +47,14 @@ test_expect_success \
     'git diff-index --cached $tree -- path1/ >current &&
      compare_diff_raw current expected'
 
+cat >expected <<\EOF
+:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M     path1/file1
+EOF
+test_expect_success \
+    '"*file1" should show path1/file1' \
+    'git diff-index --cached $tree -- "*file1" >current &&
+     compare_diff_raw current expected'
+
 cat >expected <<\EOF
 :100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M     file0
 EOF