X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=read-tree.c;h=fbd0da0ebdc5c523b7f35399a39a3b8efd373112;hb=b0bf8f24e9c7bdeb7e472e6b1fa5f51de1cdcc97;hp=8eb2432127e255347b2e6116d3f7ff57b4e06ba5;hpb=c859600954df4c292ec7c81d7f2f9d0a62b5975b;p=git.git diff --git a/read-tree.c b/read-tree.c index 8eb24321..fbd0da0e 100644 --- a/read-tree.c +++ b/read-tree.c @@ -218,11 +218,11 @@ static int oneway_merge(struct cache_entry **src, struct cache_entry **dst) if (!a) return 0; - if (old && same(old, a)) - *a = *old; - a->ce_flags &= ~htons(CE_STAGEMASK); - *dst++ = a; - return 1; + if (old && same(old, a)) { + *dst++ = old; + return 1; + } + return merged_entry(a, NULL, dst); } static void check_updates(struct cache_entry **src, int nr) @@ -275,7 +275,7 @@ static void merge_cache(struct cache_entry **src, int nr, merge_fn_t fn) check_updates(active_cache, active_nr); } -static char *read_tree_usage = "git-read-tree ( | -m [ []])"; +static char *read_tree_usage = "git-read-tree ( | -m [-u] [ []])"; static struct cache_file cache_file; @@ -320,6 +320,8 @@ int main(int argc, char **argv) die("failed to unpack tree object %s", arg); stage++; } + if (update && !merge) + usage(read_tree_usage); if (merge) { static const merge_fn_t merge_function[] = { [1] = oneway_merge,