factor out refresh_and_write_cache function
Getting the lock for the index, refreshing it and then writing it is a pattern that happens more than once throughout the codebase, and isn't trivial to get right. Factor out the refresh_and_write_cache function from builtin/am.c to read-cache.c, so it can be re-used in other places in a subsequent commit. Note that we return different error codes for failing to refresh the cache, and failing to write the index. The current caller only cares about failing to write the index. However for other callers we're going to convert in subsequent patches we will need this distinction. Helped-by: Martin Ågren <martin.agren@gmail.com> Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
745f681289
commit
22184497a3
16
builtin/am.c
16
builtin/am.c
@ -1071,19 +1071,6 @@ static const char *msgnum(const struct am_state *state)
|
||||
return sb.buf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh and write index.
|
||||
*/
|
||||
static void refresh_and_write_cache(void)
|
||||
{
|
||||
struct lock_file lock_file = LOCK_INIT;
|
||||
|
||||
hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR);
|
||||
refresh_cache(REFRESH_QUIET);
|
||||
if (write_locked_index(&the_index, &lock_file, COMMIT_LOCK))
|
||||
die(_("unable to write index file"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Dies with a user-friendly message on how to proceed after resolving the
|
||||
* problem. This message can be overridden with state->resolvemsg.
|
||||
@ -1703,7 +1690,8 @@ static void am_run(struct am_state *state, int resume)
|
||||
|
||||
unlink(am_path(state, "dirtyindex"));
|
||||
|
||||
refresh_and_write_cache();
|
||||
if (refresh_and_write_cache(REFRESH_QUIET, 0, 0) < 0)
|
||||
die(_("unable to write index file"));
|
||||
|
||||
if (repo_index_has_changes(the_repository, NULL, &sb)) {
|
||||
write_state_bool(state, "dirtyindex", 1);
|
||||
|
Reference in New Issue
Block a user