Fix pushing to a pattern with no dst
authorDaniel Barkalow <barkalow@iabervon.org>
Fri, 15 Jun 2007 14:22:37 +0000 (10:22 -0400)
committerJunio C Hamano <gitster@pobox.com>
Sat, 16 Jun 2007 08:20:26 +0000 (01:20 -0700)
Refspecs with no colons are left with no dst value, because they are
interepreted differently for fetch and push. For push, they mean to
reuse the src side. Fix this for patterns.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c

index ed62a62fa0d5eab7d154233f94e4dad1fc9fbe2f..54c9401a6bc37ad1c138c6c2c68e79b7796006d5 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -536,10 +536,11 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
                }
 
                if (pat) {
-                       dst_name = xmalloc(strlen(pat->dst) +
+                       const char *dst_side = pat->dst ? pat->dst : pat->src;
+                       dst_name = xmalloc(strlen(dst_side) +
                                           strlen(src->name) -
                                           strlen(pat->src) + 2);
-                       strcpy(dst_name, pat->dst);
+                       strcpy(dst_name, dst_side);
                        strcat(dst_name, src->name + strlen(pat->src));
                } else
                        dst_name = xstrdup(src->name);