delete_refs(): add a flags argument

This will be useful for passing REF_NODEREF through.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Michael Haggerty 2016-06-18 06:15:10 +02:00 committed by Junio C Hamano
parent 4633a846f5
commit c5f04dddb6
4 changed files with 8 additions and 7 deletions

View File

@ -806,7 +806,7 @@ static int prune_refs(struct refspec *refs, int ref_count, struct ref *ref_map,
for (ref = stale_refs; ref; ref = ref->next) for (ref = stale_refs; ref; ref = ref->next)
string_list_append(&refnames, ref->name); string_list_append(&refnames, ref->name);


result = delete_refs(&refnames); result = delete_refs(&refnames, 0);
string_list_clear(&refnames, 0); string_list_clear(&refnames, 0);
} }



View File

@ -788,7 +788,7 @@ static int rm(int argc, const char **argv)
strbuf_release(&buf); strbuf_release(&buf);


if (!result) if (!result)
result = delete_refs(&branches); result = delete_refs(&branches, 0);
string_list_clear(&branches, 0); string_list_clear(&branches, 0);


if (skipped.nr) { if (skipped.nr) {
@ -1303,7 +1303,7 @@ static int prune_remote(const char *remote, int dry_run)
string_list_sort(&refs_to_prune); string_list_sort(&refs_to_prune);


if (!dry_run) if (!dry_run)
result |= delete_refs(&refs_to_prune); result |= delete_refs(&refs_to_prune, 0);


for_each_string_list_item(item, &states.stale) { for_each_string_list_item(item, &states.stale) {
const char *refname = item->util; const char *refname = item->util;

5
refs.h
View File

@ -274,9 +274,10 @@ int delete_ref(const char *refname, const unsigned char *old_sha1,
/* /*
* Delete the specified references. If there are any problems, emit * Delete the specified references. If there are any problems, emit
* errors but attempt to keep going (i.e., the deletes are not done in * errors but attempt to keep going (i.e., the deletes are not done in
* an all-or-nothing transaction). * an all-or-nothing transaction). flags is passed through to
* ref_transaction_delete().
*/ */
int delete_refs(struct string_list *refnames); int delete_refs(struct string_list *refnames, unsigned int flags);


/** Delete a reflog */ /** Delete a reflog */
int delete_reflog(const char *refname); int delete_reflog(const char *refname);

View File

@ -2403,7 +2403,7 @@ static int delete_ref_loose(struct ref_lock *lock, int flag, struct strbuf *err)
return 0; return 0;
} }


int delete_refs(struct string_list *refnames) int delete_refs(struct string_list *refnames, unsigned int flags)
{ {
struct strbuf err = STRBUF_INIT; struct strbuf err = STRBUF_INIT;
int i, result = 0; int i, result = 0;
@ -2432,7 +2432,7 @@ int delete_refs(struct string_list *refnames)
for (i = 0; i < refnames->nr; i++) { for (i = 0; i < refnames->nr; i++) {
const char *refname = refnames->items[i].string; const char *refname = refnames->items[i].string;


if (delete_ref(refname, NULL, 0)) if (delete_ref(refname, NULL, flags))
result |= error(_("could not remove reference %s"), refname); result |= error(_("could not remove reference %s"), refname);
} }