mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-04 13:05:35 +00:00
remote: tighten up reference renaming
Tighten up which references we consider for renaming so we don't try to rename unrelated ones and end up with unexplained references. If there is a reference on the target namespace, git overwrites it, so let's do the same.
This commit is contained in:
parent
fe3b9d0731
commit
a52ab4b82a
16
src/remote.c
16
src/remote.c
@ -1380,7 +1380,7 @@ static int rename_one_remote_reference(
|
||||
goto cleanup;
|
||||
|
||||
error = git_reference_rename(
|
||||
NULL, reference, git_buf_cstr(&new_name), 0,
|
||||
NULL, reference, git_buf_cstr(&new_name), 1,
|
||||
NULL, git_buf_cstr(&log_message));
|
||||
git_reference_free(reference);
|
||||
|
||||
@ -1396,18 +1396,20 @@ static int rename_remote_references(
|
||||
const char *new_name)
|
||||
{
|
||||
int error;
|
||||
git_buf buf = GIT_BUF_INIT;
|
||||
git_reference *ref;
|
||||
git_reference_iterator *iter;
|
||||
|
||||
if ((error = git_reference_iterator_new(&iter, repo)) < 0)
|
||||
if ((error = git_buf_printf(&buf, GIT_REFS_REMOTES_DIR "%s/*", old_name)) < 0)
|
||||
return error;
|
||||
|
||||
error = git_reference_iterator_glob_new(&iter, repo, git_buf_cstr(&buf));
|
||||
git_buf_free(&buf);
|
||||
|
||||
if (error < 0)
|
||||
return error;
|
||||
|
||||
while ((error = git_reference_next(&ref, iter)) == 0) {
|
||||
if (git__prefixcmp(ref->name, GIT_REFS_REMOTES_DIR)) {
|
||||
git_reference_free(ref);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((error = rename_one_remote_reference(ref, old_name, new_name)) < 0)
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user