summaryrefslogtreecommitdiff
path: root/src/merge.c
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2013-11-22 18:02:12 -0500
committerEdward Thomson <ethomson@edwardthomson.com>2013-12-02 16:57:41 -0600
commitbab0b9f2d21d993c3f25ee00ce2d243a4dc0de93 (patch)
tree57e11cab3b255a3fb8a46b00601504a002702f42 /src/merge.c
parent300d192f7ed45112121f2a35d5ca80a4913c7aad (diff)
downloadlibgit2-bab0b9f2d21d993c3f25ee00ce2d243a4dc0de93.tar.gz
clean up state metadata more consistently
Diffstat (limited to 'src/merge.c')
-rw-r--r--src/merge.c46
1 files changed, 12 insertions, 34 deletions
diff --git a/src/merge.c b/src/merge.c
index c31a935b0..05e656d1e 100644
--- a/src/merge.c
+++ b/src/merge.c
@@ -2362,6 +2362,17 @@ done:
return error;
}
+static int merge_state_cleanup(git_repository *repo)
+{
+ const char *state_files[] = {
+ GIT_MERGE_HEAD_FILE,
+ GIT_MERGE_MODE_FILE,
+ GIT_MERGE_MSG_FILE,
+ };
+
+ return git_repository__cleanup_files(repo, state_files, ARRAY_SIZE(state_files));
+}
+
int git_merge(
git_merge_result **out,
git_repository *repo,
@@ -2453,7 +2464,7 @@ int git_merge(
goto done;
on_error:
- git_repository_merge_cleanup(repo);
+ merge_state_cleanup(repo);
git_index_free(index_new);
git__free(result);
@@ -2497,39 +2508,6 @@ int git_merge__setup(
return error;
}
-int git_repository_merge_cleanup(git_repository *repo)
-{
- int error = 0;
- git_buf merge_head_path = GIT_BUF_INIT,
- merge_mode_path = GIT_BUF_INIT,
- merge_msg_path = GIT_BUF_INIT;
-
- assert(repo);
-
- if (git_buf_joinpath(&merge_head_path, repo->path_repository, GIT_MERGE_HEAD_FILE) < 0 ||
- git_buf_joinpath(&merge_mode_path, repo->path_repository, GIT_MERGE_MODE_FILE) < 0 ||
- git_buf_joinpath(&merge_msg_path, repo->path_repository, GIT_MERGE_MSG_FILE) < 0)
- return -1;
-
- if (git_path_isfile(merge_head_path.ptr)) {
- if ((error = p_unlink(merge_head_path.ptr)) < 0)
- goto cleanup;
- }
-
- if (git_path_isfile(merge_mode_path.ptr))
- (void)p_unlink(merge_mode_path.ptr);
-
- if (git_path_isfile(merge_msg_path.ptr))
- (void)p_unlink(merge_msg_path.ptr);
-
-cleanup:
- git_buf_free(&merge_msg_path);
- git_buf_free(&merge_mode_path);
- git_buf_free(&merge_head_path);
-
- return error;
-}
-
/* Merge result data */
int git_merge_result_is_uptodate(git_merge_result *merge_result)