aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-03-21 23:02:47 -0700
committerJunio C Hamano <gitster@pobox.com>2009-03-21 23:02:47 -0700
commit0e1aa2f7af6cc11c56a780764ef0ca94c19f0724 (patch)
treef8a28374a5df2e7933982815db6c9defb2160844
parentb60df87a6b39b3e9fc2fe81585a8bc55a502dcd3 (diff)
parentaab3b9a1aa3b7d082088ab014480b5d81c437624 (diff)
downloadgit-0e1aa2f7af6cc11c56a780764ef0ca94c19f0724.tar.gz
git-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-xt/t1008-read-tree-overlay.sh31
-rw-r--r--unpack-trees.c6
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 000000000..f9e00285d
--- /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 e547282ed..5820ce48f 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;
}