diff options
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/fetch.c | 12 | ||||
-rw-r--r-- | builtin/remote.c | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/builtin/fetch.c b/builtin/fetch.c index 605d1bfd66..e295d97fdb 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -540,10 +540,10 @@ static int fetch_refs(struct transport *transport, struct ref *ref_map) return ret; } -static int prune_refs(struct transport *transport, struct ref *ref_map) +static int prune_refs(struct refspec *refs, int ref_count, struct ref *ref_map) { int result = 0; - struct ref *ref, *stale_refs = get_stale_heads(transport->remote, ref_map); + struct ref *ref, *stale_refs = get_stale_heads(refs, ref_count, ref_map); const char *dangling_msg = dry_run ? _(" (%s will become dangling)\n") : _(" (%s has become dangling)\n"); @@ -734,8 +734,12 @@ static int do_fetch(struct transport *transport, free_refs(ref_map); return 1; } - if (prune) - prune_refs(transport, ref_map); + if (prune) { + if (ref_count) + prune_refs(refs, ref_count, ref_map); + else + prune_refs(transport->remote->fetch, transport->remote->fetch_refspec_nr, ref_map); + } free_refs(ref_map); /* if neither --no-tags nor --tags was specified, do automated tag diff --git a/builtin/remote.c b/builtin/remote.c index f2a9c26dc3..de52367927 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -349,7 +349,8 @@ static int get_ref_states(const struct ref *remote_refs, struct ref_states *stat else string_list_append(&states->tracked, abbrev_branch(ref->name)); } - stale_refs = get_stale_heads(states->remote, fetch_map); + stale_refs = get_stale_heads(states->remote->fetch, + states->remote->fetch_refspec_nr, fetch_map); for (ref = stale_refs; ref; ref = ref->next) { struct string_list_item *item = string_list_append(&states->stale, abbrev_branch(ref->name)); |