diff --git a/CHANGELOG.md b/CHANGELOG.md index 32925d485..45fce0d69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ v0.24 + 1 directory matching the starting directory will not prevent git from finding a repository in the starting directory or a parent directory. +* Do not fail when deleting remotes in the presence of broken + global configs which contain branches. + ### API additions * You can now get the user-agent used by libgit2 using the diff --git a/src/remote.c b/src/remote.c index 5f89c4026..c1d7d59ea 100644 --- a/src/remote.c +++ b/src/remote.c @@ -2162,15 +2162,21 @@ static int remove_branch_config_related_entries( if (git_buf_printf(&buf, "branch.%.*s.merge", (int)branch_len, branch) < 0) break; - if ((error = git_config_delete_entry(config, git_buf_cstr(&buf))) < 0) - break; + if ((error = git_config_delete_entry(config, git_buf_cstr(&buf))) < 0) { + if (error != GIT_ENOTFOUND) + break; + giterr_clear(); + } git_buf_clear(&buf); if (git_buf_printf(&buf, "branch.%.*s.remote", (int)branch_len, branch) < 0) break; - if ((error = git_config_delete_entry(config, git_buf_cstr(&buf))) < 0) - break; + if ((error = git_config_delete_entry(config, git_buf_cstr(&buf))) < 0) { + if (error != GIT_ENOTFOUND) + break; + giterr_clear(); + } } if (error == GIT_ITEROVER)