]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'jk/refspecs-negative'
authorJunio C Hamano <gitster@pobox.com>
Mon, 5 Oct 2020 21:01:54 +0000 (14:01 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Oct 2020 21:01:54 +0000 (14:01 -0700)
"git fetch" and "git push" support negative refspecs.

* jk/refspecs-negative:
  refspec: add support for negative refspecs

1  2 
builtin/fetch.c
refspec.c
refspec.h
remote.c
remote.h

diff --cc builtin/fetch.c
index 25fa1cf931af674ca5c5b98e11f7526a2c74ae8b,310699eb7e4517e35f52c1d0b3e3e3324aadc692..f9c3c49f14d9cd508102405f99d6010c21691541
@@@ -539,8 -530,21 +539,18 @@@ static struct ref *get_ref_map(struct r
                tail = &rm->next;
        }
  
+       /*
+        * apply negative refspecs first, before we remove duplicates. This is
+        * necessary as negative refspecs might remove an otherwise conflicting
+        * duplicate.
+        */
+       if (rs->nr)
+               ref_map = apply_negative_refspecs(ref_map, rs);
+       else
+               ref_map = apply_negative_refspecs(ref_map, &remote->fetch);
        ref_map = ref_remove_duplicates(ref_map);
  
 -      refname_hash_init(&existing_refs);
 -      for_each_ref(add_one_refname, &existing_refs);
 -
        for (rm = ref_map; rm; rm = rm->next) {
                if (rm->peer_ref) {
                        const char *refname = rm->peer_ref->name;
diff --cc refspec.c
Simple merge
diff --cc refspec.h
Simple merge
diff --cc remote.c
Simple merge
diff --cc remote.h
Simple merge