]> git.ipfire.org Git - thirdparty/git.git/commitdiff
push: copy code to setup_push_simple()
authorFelipe Contreras <felipe.contreras@gmail.com>
Mon, 31 May 2021 19:32:33 +0000 (14:32 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Jun 2021 01:09:51 +0000 (10:09 +0900)
In order to avoid doing unnecessary things and simplify it in further
patches. In particular moving the additional name safety out of
setup_push_upstream() and into setup_push_simple() and thus making both
more straightforward.

The code is copied exactly as-is; no functional changes.

Reviewed-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/push.c

index 48c38fe25a50fb68b2a4a9e10cd66cfc3c9d69a9..6a620a90e3d7baf9628004dbf31d99c30dc49226 100644 (file)
@@ -225,10 +225,38 @@ static void setup_push_current(struct remote *remote, struct branch *branch)
 
 static void setup_push_simple(struct remote *remote, struct branch *branch, int same_remote)
 {
-       if (!same_remote)
-               setup_push_current(remote, branch);
-       else
-               setup_push_upstream(remote, branch, same_remote, 1);
+       if (!same_remote) {
+               if (!branch)
+                       die(_(message_detached_head_die), remote->name);
+               refspec_appendf(&rs, "%s:%s", branch->refname, branch->refname);
+       } else {
+               if (!branch)
+                       die(_(message_detached_head_die), remote->name);
+               if (!branch->merge_nr || !branch->merge || !branch->remote_name)
+                       die(_("The current branch %s has no upstream branch.\n"
+                           "To push the current branch and set the remote as upstream, use\n"
+                           "\n"
+                           "    git push --set-upstream %s %s\n"),
+                           branch->name,
+                           remote->name,
+                           branch->name);
+               if (branch->merge_nr != 1)
+                       die(_("The current branch %s has multiple upstream branches, "
+                           "refusing to push."), branch->name);
+               if (!same_remote)
+                       die(_("You are pushing to remote '%s', which is not the upstream of\n"
+                             "your current branch '%s', without telling me what to push\n"
+                             "to update which remote branch."),
+                           remote->name, branch->name);
+
+               if (1) {
+                       /* Additional safety */
+                       if (strcmp(branch->refname, branch->merge[0]->src))
+                               die_push_simple(branch, remote);
+               }
+
+               refspec_appendf(&rs, "%s:%s", branch->refname, branch->merge[0]->src);
+       }
 }
 
 static int is_same_remote(struct remote *remote)