diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-03-21 23:02:47 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-03-21 23:02:47 -0700 |
commit | 0e1aa2f7af6cc11c56a780764ef0ca94c19f0724 (patch) | |
tree | f8a28374a5df2e7933982815db6c9defb2160844 | |
parent | format-patch: --numbered-files and --stdout aren't mutually exclusive (diff) | |
parent | read-tree A B C: do not create a bogus index and do not segfault (diff) | |
download | tgif-0e1aa2f7af6cc11c56a780764ef0ca94c19f0724.tar.xz |
Merge branch 'jc/maint-1.6.0-read-tree-overlay' into maint
* jc/maint-1.6.0-read-tree-overlay:
read-tree A B C: do not create a bogus index and do not segfault
-rwxr-xr-x | t/t1008-read-tree-overlay.sh | 31 | ||||
-rw-r--r-- | unpack-trees.c | 6 |
2 files changed, 34 insertions, 3 deletions
diff --git a/t/t1008-read-tree-overlay.sh b/t/t1008-read-tree-overlay.sh new file mode 100755 index 0000000000..f9e00285db --- /dev/null +++ b/t/t1008-read-tree-overlay.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +test_description='test multi-tree read-tree without merging' + +. ./test-lib.sh + +test_expect_success setup ' + echo one >a && + git add a && + git commit -m initial && + git tag initial && + echo two >b && + git add b && + git commit -m second && + git checkout -b side initial && + echo three >a && + mkdir b && + echo four >b/c && + git add b/c && + git commit -m third +' + +test_expect_success 'multi-read' ' + git read-tree initial master side && + (echo a; echo b/c) >expect && + git ls-files >actual && + test_cmp expect actual +' + +test_done + diff --git a/unpack-trees.c b/unpack-trees.c index e547282ed5..5820ce48f3 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -49,7 +49,7 @@ static void add_entry(struct unpack_trees_options *o, struct cache_entry *ce, memcpy(new, ce, size); new->next = NULL; new->ce_flags = (new->ce_flags & ~clear) | set; - add_index_entry(&o->result, new, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE|ADD_CACHE_SKIP_DFCHECK); + add_index_entry(&o->result, new, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE); } /* Unlink the last component and attempt to remove leading @@ -286,9 +286,9 @@ static int unpack_nondirectories(int n, unsigned long mask, if (o->merge) return call_unpack_fn(src, o); - n += o->merge; for (i = 0; i < n; i++) - add_entry(o, src[i], 0, 0); + if (src[i] && src[i] != o->df_conflict_entry) + add_entry(o, src[i], 0, 0); return 0; } |