Documentation: receive.denyCurrentBranch defaults to 'refuse'
[gitweb.git] / builtin-push.c
index 28a26e7db2a86bf1514cdd54f9735c0be146dce7..f7bc2b292fb85725d9cc26ce09f2302aaa7167fe 100644 (file)
@@ -52,7 +52,7 @@ static void set_refspecs(const char **refs, int nr)
                } else if (deleterefs && !strchr(ref, ':')) {
                        char *delref;
                        int len = strlen(ref)+1;
-                       delref = xmalloc(len);
+                       delref = xmalloc(len+1);
                        strcpy(delref, ":");
                        strcat(delref, ref);
                        ref = delref;
@@ -68,7 +68,7 @@ static void setup_push_tracking(void)
        struct branch *branch = branch_get(NULL);
        if (!branch)
                die("You are not currently on a branch.");
-       if (!branch->merge_nr)
+       if (!branch->merge_nr || !branch->merge)
                die("The current branch %s is not tracking anything.",
                    branch->name);
        if (branch->merge_nr != 1)
@@ -218,6 +218,8 @@ int cmd_push(int argc, const char **argv, const char *prefix)
                OPT_BOOLEAN( 0 , "thin", &thin, "use thin pack"),
                OPT_STRING( 0 , "receive-pack", &receivepack, "receive-pack", "receive pack program"),
                OPT_STRING( 0 , "exec", &receivepack, "receive-pack", "receive pack program"),
+               OPT_BIT('u', "set-upstream", &flags, "set upstream for git pull/status",
+                       TRANSPORT_PUSH_SET_UPSTREAM),
                OPT_END()
        };