git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/6] Unconvolutize push.default=simple
@ 2021-05-29  7:11 Felipe Contreras
  2021-05-29  7:11 ` [PATCH v2 1/6] push: hedge code of default=simple Felipe Contreras
                   ` (23 more replies)
  0 siblings, 24 replies; 59+ messages in thread
From: Felipe Contreras @ 2021-05-29  7:11 UTC (permalink / raw)
  To: git
  Cc: Elijah Newren, Mathias Kunter,
	Ævar Arnfjörð Bjarmason, Ramkumar Ramachandra,
	Jeff King, René Scharfe, Matthieu Moy, Junio C Hamano,
	Felipe Contreras

Tired of jumping through hoops trying to understand what the "simple"
mode does, I decided to reorganize it up for good so it's crystal
clear.

There are no functional changes.

Basically the simple mode pushes the current branch with the same name
on the remote.

Except... when there's no upstream branch configured with the same name.

Now the code and the documentation are clear.

This is basically the same as v1, except I removed a bunch of patches which are now part of a
different series. Also, I updated some commit messages with suggestions from Elijah Newren.

The result of this series is in short this function:

static void setup_push_simple(struct remote *remote, struct branch *branch, int triangular)
{
	if (!branch)
		die(_(message_detached_head_die), remote->name);

	if (!triangular) {
		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);

		/* Additional safety */
		if (strcmp(branch->refname, branch->merge[0]->src))
			die_push_simple(branch, remote);
	}
	refspec_appendf(&rs, "%s:%s", branch->refname, branch->refname);
}

Felipe Contreras (6):
  push: hedge code of default=simple
  push: move code to setup_push_simple()
  push: reorganize setup_push_simple()
  push: simplify setup_push_simple()
  push: remove unused code in setup_push_upstream()
  doc: push: explain default=simple correctly

 Documentation/config/push.txt | 13 ++++++------
 builtin/push.c                | 40 ++++++++++++++++++++++++-----------
 2 files changed, 34 insertions(+), 19 deletions(-)

Range-diff against v1:
 1:  2856711eb3 !  1:  f1f42bda32 push: hedge code of default=simple
    @@ Commit message
         `simple` is the most important mode so move the relevant code to its own
         function to make it easier to see what it's doing.
     
    +    Reviewed-by: Elijah Newren <newren@gmail.com>
         Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
     
      ## builtin/push.c ##
 2:  33acb09e82 !  2:  bb6d810011 push: move code to setup_push_simple()
    @@ Commit message
     
         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>
     
      ## builtin/push.c ##
 3:  de1b621b7e !  3:  d66a442fba push: reorganize setup_push_simple()
    @@ Metadata
      ## Commit message ##
         push: reorganize setup_push_simple()
     
    -    Simply move the code around.
    +    Simply move the code around and remove dead code. In particular the
    +    'trivial' conditional is a no-op since that part of the code is the
    +    !trivial leg of the conditional beforehand.
     
         No functional changes.
     
    +    Suggestions-by: Elijah Newren <newren@gmail.com>
         Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
     
      ## builtin/push.c ##
 4:  83efcad143 !  4:  eaae6a826a push: simplify setup_push_simple()
    @@ Metadata
      ## Commit message ##
         push: simplify setup_push_simple()
     
    -    branch->refname can never be different from branch->merge[0]->src.
    +    There's a safety check to make sure branch->refname is not different
    +    from branch->merge[0]->src, otherwise we die().
     
    +    Therefore we always push to branch->refname.
    +
    +    Suggestions-by: Elijah Newren <newren@gmail.com>
         Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
     
      ## builtin/push.c ##
 5:  d7489e9545 =  5:  8d9ae5e552 push: remove unused code in setup_push_upstream()
 6:  e693341403 <  -:  ---------- push: merge current and simple
 7:  830a57c867 <  -:  ---------- push: remove redundant check
 8:  d2dded5998 <  -:  ---------- push: fix Yoda condition
 9:  7528738091 <  -:  ---------- push: remove trivial function
10:  1ae0546df6 <  -:  ---------- push: flip !triangular for centralized
11:  3acd42e385 !  6:  b35bdf14dc doc: push: explain default=simple correctly
    @@ Metadata
      ## Commit message ##
         doc: push: explain default=simple correctly
     
    -    Now that the code has been unconvolutized and it's clear what it's
    +    Now that the code has been simplified and it's clear what it's
         actually doing, update the documentation to reflect that.
     
         Namely; the simple mode only barfs when working on a centralized
-- 
2.32.0.rc0


^ permalink raw reply	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2021-06-01 23:53 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-29  7:11 [PATCH v2 0/6] Unconvolutize push.default=simple Felipe Contreras
2021-05-29  7:11 ` [PATCH v2 1/6] push: hedge code of default=simple Felipe Contreras
2021-05-31  4:44   ` Junio C Hamano
2021-05-31  7:50     ` Felipe Contreras
2021-05-29  7:11 ` [PATCH v2 2/6] push: move code to setup_push_simple() Felipe Contreras
2021-05-31  5:04   ` Junio C Hamano
2021-05-31  8:03     ` Felipe Contreras
2021-05-29  7:11 ` [PATCH v2 3/6] push: reorganize setup_push_simple() Felipe Contreras
2021-05-31  5:04   ` Junio C Hamano
2021-05-29  7:11 ` [PATCH v2 4/6] push: simplify setup_push_simple() Felipe Contreras
2021-05-31  5:04   ` Junio C Hamano
2021-05-29  7:11 ` [PATCH v2 5/6] push: remove unused code in setup_push_upstream() Felipe Contreras
2021-05-29  7:11 ` [PATCH v2 6/6] doc: push: explain default=simple correctly Felipe Contreras
2021-05-30 18:19   ` Mathias Kunter
2021-05-30 19:09     ` Felipe Contreras
2021-05-31  7:12       ` Mathias Kunter
2021-05-31 15:14         ` Felipe Contreras
2021-05-31 16:54           ` Mathias Kunter
2021-05-31 17:31             ` Felipe Contreras
2021-05-31 18:38               ` Mathias Kunter
2021-05-31 21:15                 ` Felipe Contreras
2021-05-31 21:54                   ` Mathias Kunter
2021-05-31  5:14   ` Junio C Hamano
2021-05-31  8:11     ` Felipe Contreras
2021-06-01  9:44       ` Junio C Hamano
2021-06-01 12:12         ` Felipe Contreras
2021-06-01 15:57           ` Philip Oakley
2021-06-01 16:35             ` Felipe Contreras
2021-06-01 19:39               ` Philip Oakley
2021-06-01 23:53                 ` Felipe Contreras
2021-06-01 19:34           ` Junio C Hamano
2021-05-29  7:44 ` [PATCH 00/15] push: revamp push.default Felipe Contreras
2021-05-29  7:44 ` [PATCH 01/15] push: create new get_upstream_ref() helper Felipe Contreras
2021-05-29  7:44 ` [PATCH 02/15] push: return immediately in trivial switch case Felipe Contreras
2021-05-29  7:44 ` [PATCH 03/15] push: reorder switch cases Felipe Contreras
2021-05-31  6:34   ` Junio C Hamano
2021-05-31  8:14     ` Felipe Contreras
2021-05-29  7:44 ` [PATCH 04/15] push: factor out null branch check Felipe Contreras
2021-05-29  7:44 ` [PATCH 05/15] push: only get the branch when needed Felipe Contreras
2021-05-31  6:44   ` Junio C Hamano
2021-05-31  8:16     ` Felipe Contreras
2021-05-29  7:44 ` [PATCH 06/15] push: make setup_push_* return the dst Felipe Contreras
2021-05-29  7:44 ` [PATCH 07/15] push: trivial simplifications Felipe Contreras
2021-05-29  7:44 ` [PATCH 08/15] push: get rid of all the setup_push_* functions Felipe Contreras
2021-05-31  6:44   ` Junio C Hamano
2021-05-29  7:44 ` [PATCH 09/15] push: factor out the typical case Felipe Contreras
2021-05-29  7:44 ` [PATCH 10/15] push: remove redundant check Felipe Contreras
2021-05-29  7:44 ` [PATCH 11/15] push: fix Yoda condition Felipe Contreras
2021-05-31  6:44   ` Junio C Hamano
2021-05-29  7:44 ` [PATCH 12/15] push: remove trivial function Felipe Contreras
2021-05-29  7:44 ` [PATCH 13/15] push: only get triangular when needed Felipe Contreras
2021-05-31  6:48   ` Junio C Hamano
2021-05-29  7:44 ` [PATCH 14/15] push: don't get a full remote object Felipe Contreras
2021-05-29  7:44 ` [PATCH 15/15] push: rename !triangular to same_remote Felipe Contreras
2021-05-31  7:54   ` Junio C Hamano
2021-05-29 20:37 ` [PATCH v2 0/6] Unconvolutize push.default=simple Philip Oakley
2021-05-30 16:27   ` Felipe Contreras
2021-05-30 11:31 ` Ævar Arnfjörð Bjarmason
2021-05-30 16:22   ` Felipe Contreras

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).