delete_refs(): new function for the refs API

Move the function remove_branches() from builtin/remote.c to refs.c,
rename it to delete_refs(), and make it public.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty
2015-06-22 16:02:55 +02:00
committed by Junio C Hamano
parent fc67a0825c
commit 98ffd5ff67
3 changed files with 27 additions and 20 deletions

19
refs.c
View File

@ -2830,6 +2830,25 @@ int delete_ref(const char *refname, const unsigned char *old_sha1,
return 0;
}
int delete_refs(struct string_list *refnames)
{
struct strbuf err = STRBUF_INIT;
int i, result = 0;
if (repack_without_refs(refnames, &err))
result |= error("%s", err.buf);
strbuf_release(&err);
for (i = 0; i < refnames->nr; i++) {
const char *refname = refnames->items[i].string;
if (delete_ref(refname, NULL, 0))
result |= error(_("Could not remove branch %s"), refname);
}
return result;
}
/*
* People using contrib's git-new-workdir have .git/logs/refs ->
* /some/other/path/.git/logs/refs, and that may live on another device.