diff options
| author | Edward Thomson <ethomson@microsoft.com> | 2013-11-22 18:02:12 -0500 |
|---|---|---|
| committer | Edward Thomson <ethomson@edwardthomson.com> | 2013-12-02 16:57:41 -0600 |
| commit | bab0b9f2d21d993c3f25ee00ce2d243a4dc0de93 (patch) | |
| tree | 57e11cab3b255a3fb8a46b00601504a002702f42 /src/merge.c | |
| parent | 300d192f7ed45112121f2a35d5ca80a4913c7aad (diff) | |
| download | libgit2-bab0b9f2d21d993c3f25ee00ce2d243a4dc0de93.tar.gz | |
clean up state metadata more consistently
Diffstat (limited to 'src/merge.c')
| -rw-r--r-- | src/merge.c | 46 |
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) |
