summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 840599f..2b791d1 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -408,8 +408,13 @@ static int unpack_trees_start(struct merge_options *opt,
memset(&opt->priv->unpack_opts, 0, sizeof(opt->priv->unpack_opts));
if (opt->priv->call_depth)
opt->priv->unpack_opts.index_only = 1;
- else
+ else {
opt->priv->unpack_opts.update = 1;
+ /* FIXME: should only do this if !overwrite_ignore */
+ CALLOC_ARRAY(opt->priv->unpack_opts.dir, 1);
+ opt->priv->unpack_opts.dir->flags |= DIR_SHOW_IGNORED;
+ setup_standard_excludes(opt->priv->unpack_opts.dir);
+ }
opt->priv->unpack_opts.merge = 1;
opt->priv->unpack_opts.head_idx = 2;
opt->priv->unpack_opts.fn = threeway_merge;
@@ -423,6 +428,10 @@ static int unpack_trees_start(struct merge_options *opt,
init_tree_desc_from_tree(t+2, merge);
rc = unpack_trees(3, t, &opt->priv->unpack_opts);
+ if (opt->priv->unpack_opts.dir) {
+ dir_clear(opt->priv->unpack_opts.dir);
+ FREE_AND_NULL(opt->priv->unpack_opts.dir);
+ }
cache_tree_free(&opt->repo->index->cache_tree);
/*