do not overwrite files marked "assume unchanged"
A merge will fail gracefully if it needs to update files marked
"assume unchanged", but other similar commands will not. In
particular, checkout and rebase will silently overwrite changes to
such files.
This is a regression introduced in commit 1dcafcc0
(verify_uptodate():
add ce_uptodate(ce) test), which avoids lstat's during a merge, if the
index entry is up-to-date. If the CE_VALID flag is set, however, we
cannot trust CE_UPTODATE.
Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
e92e9cd3c3
commit
aecda37c66
@ -862,7 +862,7 @@ static int verify_uptodate_1(struct cache_entry *ce,
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (o->index_only || (!ce_skip_worktree(ce) && (o->reset || ce_uptodate(ce))))
|
||||
if (o->index_only || (!((ce->ce_flags & CE_VALID) || ce_skip_worktree(ce)) && (o->reset || ce_uptodate(ce))))
|
||||
return 0;
|
||||
|
||||
if (!lstat(ce->name, &st)) {
|
||||
|
Reference in New Issue
Block a user