Make path-limiting be incremental when possible.
[gitweb.git] / read-tree.c
index f39fe5ca653db7a4972cf99e790991c3d88495d0..eaff4441963409ea058722ef08fcf181a34a0c96 100644 (file)
@@ -337,7 +337,7 @@ static void check_updates(struct cache_entry **src, int nr)
                if (ce->ce_flags & mask) {
                        ce->ce_flags &= ~mask;
                        if (update)
-                               checkout_entry(ce, &state);
+                               checkout_entry(ce, &state, NULL);
                }
        }
        if (total) {
@@ -560,9 +560,11 @@ static int threeway_merge(struct cache_entry **stages)
                 */
                if ((head_deleted && remote_deleted) ||
                    (head_deleted && remote && remote_match) ||
-                   (remote_deleted && head && head_match))
+                   (remote_deleted && head && head_match)) {
+                       if (index)
+                               return deleted_entry(index, index);
                        return 0;
-
+               }
                /*
                 * Added in both, identically.
                 */
@@ -704,7 +706,7 @@ static int read_cache_unmerged(void)
        return deleted;
 }
 
-static const char read_tree_usage[] = "git-read-tree (<sha> | -m [-u | -i] <sha1> [<sha2> [<sha3>]])";
+static const char read_tree_usage[] = "git-read-tree (<sha> | -m [--aggressive] [-u | -i] <sha1> [<sha2> [<sha3>]])";
 
 static struct cache_file cache_file;
 
@@ -715,6 +717,7 @@ int main(int argc, char **argv)
        merge_fn_t fn = NULL;
 
        setup_git_directory();
+       git_config(git_default_config);
 
        newfd = hold_index_file_for_update(&cache_file, get_index_file());
        if (newfd < 0)