diff options
Diffstat (limited to 'unpack-trees.c')
-rw-r--r-- | unpack-trees.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index de8da4626d..09e53df3b2 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -539,7 +539,8 @@ static struct cache_entry *create_ce_entry(const struct traverse_info *info, con struct cache_entry *ce = xcalloc(1, cache_entry_size(len)); ce->ce_mode = create_ce_mode(n->mode); - ce->ce_flags = create_ce_flags(len, stage); + ce->ce_flags = create_ce_flags(stage); + ce->ce_namelen = len; hashcpy(ce->sha1, n->sha1); make_traverse_path(ce->name, info, n); @@ -1298,7 +1299,7 @@ static int verify_clean_subdirectory(struct cache_entry *ce, * First let's make sure we do not have a local modification * in that directory. */ - namelen = strlen(ce->name); + namelen = ce_namelen(ce); for (i = locate_in_src_index(ce, o); i < o->src_index->cache_nr; i++) { @@ -1835,7 +1836,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o) if (old && same(old, a)) { int update = 0; - if (o->reset && !ce_uptodate(old) && !ce_skip_worktree(old)) { + if (o->reset && o->update && !ce_uptodate(old) && !ce_skip_worktree(old)) { struct stat st; if (lstat(old->name, &st) || ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE)) |