зеркало из https://github.com/microsoft/git.git
read_cache: roll back lock in `update_index_if_able()`
`update_index_if_able()` used to always commit the lock or roll it back.
Commit 03b866477
(read-cache: new API write_locked_index instead of
write_index/write_cache, 2014-06-13) stopped rolling it back in case a
write was not even attempted. This change in behavior is not motivated
in the commit message and appears to be accidental: the `else`-path was
removed, although that changed the behavior in case the `if` shortcuts.
Reintroduce the rollback and document this behavior. While at it, move
the documentation on this function from the function definition to the
function declaration in cache.h.
If `write_locked_index(..., COMMIT_LOCK)` fails, it will roll back the
lock for us (see the previous commit).
Noticed-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
df60cf5789
Коммит
b74c90fb41
4
cache.h
4
cache.h
|
@ -734,6 +734,10 @@ extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
|
|||
extern int refresh_index(struct index_state *, unsigned int flags, const struct pathspec *pathspec, char *seen, const char *header_msg);
|
||||
extern struct cache_entry *refresh_cache_entry(struct cache_entry *, unsigned int);
|
||||
|
||||
/*
|
||||
* Opportunistically update the index but do not complain if we can't.
|
||||
* The lockfile is always committed or rolled back.
|
||||
*/
|
||||
extern void update_index_if_able(struct index_state *, struct lock_file *);
|
||||
|
||||
extern int hold_locked_index(struct lock_file *, int);
|
||||
|
|
|
@ -2176,14 +2176,13 @@ static int has_racy_timestamp(struct index_state *istate)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Opportunistically update the index but do not complain if we can't
|
||||
*/
|
||||
void update_index_if_able(struct index_state *istate, struct lock_file *lockfile)
|
||||
{
|
||||
if ((istate->cache_changed || has_racy_timestamp(istate)) &&
|
||||
verify_index(istate))
|
||||
write_locked_index(istate, lockfile, COMMIT_LOCK);
|
||||
else
|
||||
rollback_lock_file(lockfile);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче