mirror of
https://github.com/git/git.git
synced 2024-11-25 10:54:00 +08:00
remote rm: handle symbolic refs correctly
In the modern world of reference backends, it is not OK to delete a symref by unlink()ing the file directly. This must be done via the refs API. We do so by adding the symref to the list of references to delete along with the non-symbolic references, then calling delete_refs() with the new flags option set to REF_NODEREF. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c5f04dddb6
commit
29a7cf9644
@ -539,10 +539,6 @@ static int add_branch_for_removal(const char *refname,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* make sure that symrefs are deleted */
|
||||
if (flags & REF_ISSYMREF)
|
||||
return unlink(git_path("%s", refname));
|
||||
|
||||
string_list_append(branches->branches, refname);
|
||||
|
||||
return 0;
|
||||
@ -788,7 +784,7 @@ static int rm(int argc, const char **argv)
|
||||
strbuf_release(&buf);
|
||||
|
||||
if (!result)
|
||||
result = delete_refs(&branches, 0);
|
||||
result = delete_refs(&branches, REF_NODEREF);
|
||||
string_list_clear(&branches, 0);
|
||||
|
||||
if (skipped.nr) {
|
||||
|
Loading…
Reference in New Issue
Block a user