fetch: honor the user-provided refspecs when pruning refs
[gitweb.git] / builtin / fetch.c
index 605d1bfd66dfcfdba04073454a784737805d6bcc..e295d97fdb90a1db960c85c38b5e7fc9f5c60560 100644 (file)
@@ -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