diff options
author | Thomas Gummerer <t.gummerer@gmail.com> | 2019-09-11 19:20:25 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-09-20 09:58:21 -0700 |
commit | 22184497a36a90e541617a51de6671ca5948612c (patch) | |
tree | a70eaa44081f73758d7665191e42e3877fe884e2 /builtin/am.c | |
parent | First batch after Git 2.23 (diff) | |
download | tgif-22184497a36a90e541617a51de6671ca5948612c.tar.xz |
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>
Diffstat (limited to 'builtin/am.c')
-rw-r--r-- | builtin/am.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/builtin/am.c b/builtin/am.c index 1aea657a7f..92e0e70069 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1072,19 +1072,6 @@ static const char *msgnum(const struct am_state *state) } /** - * 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); |