if (!lstat(ce->name, &st)) {
int cnt;
- if (o->dir && excluded(o->dir, ce->name))
+ if (o->dir && excluded(o->dir, ce->name, ce_to_dtype(ce)))
/*
* ce->name is explicitly excluded, so it is Ok to
* overwrite it.
* a match.
*/
if (same(old, merge)) {
- *merge = *old;
+ memcpy(merge, old, offsetof(struct cache_entry, name));
} else {
verify_uptodate(old, o);
invalidate_ce_path(old);