git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: git@vger.kernel.org, "Elijah Newren" <newren@gmail.com>,
	"Mathias Kunter" <mathiaskunter@gmail.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"Ramkumar Ramachandra" <r@artagnon.com>,
	"Jeff King" <peff@peff.net>, "René Scharfe" <l.s.r@web.de>,
	"Matthieu Moy" <git@matthieu-moy.fr>
Subject: Re: [PATCH v2 2/6] push: move code to setup_push_simple()
Date: Mon, 31 May 2021 14:04:51 +0900	[thread overview]
Message-ID: <xmqqczt7xzm4.fsf@gitster.g> (raw)
In-Reply-To: 20210529071115.1908310-3-felipe.contreras@gmail.com

Felipe Contreras <felipe.contreras@gmail.com> writes:

> In order to avoid doing unnecessary things and simplify it in further
> patches.
>
> The code is copied exactly as-is; no functional changes.

The title says "move" and I expected to see corresponding deletions,
but it seems that this (possibly temporarily) duplicates what these
two functions do, without removing them, which (possibly
temporarily) risks the two to drift apart.  So, the resulting code
from this step will do nothing wrong (it's just two function's
bodies inlined in duplicated form), but depending on how the code
evolves, it might turn out to be a good change or a bad change---we
cannot judge by this step alone.

From a quick scanning of the remainder of the series, it seems that
3/6 and 4/6 improve the copied code without changing the behaviour,
and at the end these two functions remain, so we have duplicated
logic for these two functions and improvements only live in one of
the copies (namely, in the setup_push_simple())?  Would that be a
problem, or it is too much work to do better, I wonder?

Let's keep reading.

> Reviewed-by: Elijah Newren <newren@gmail.com>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  builtin/push.c | 36 ++++++++++++++++++++++++++++++++----
>  1 file changed, 32 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/push.c b/builtin/push.c
> index 7045e4ef0c..d173c39283 100644
> --- a/builtin/push.c
> +++ b/builtin/push.c
> @@ -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 triangular)
>  {
> -	if (triangular)
> -		setup_push_current(remote, branch);
> -	else
> -		setup_push_upstream(remote, branch, triangular, 1);
> +	if (triangular) {
> +		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 (triangular)
> +			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_workflow_triangular(struct remote *remote)

  reply	other threads:[~2021-05-31  5:05 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqczt7xzm4.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=avarab@gmail.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@matthieu-moy.fr \
    --cc=git@vger.kernel.org \
    --cc=l.s.r@web.de \
    --cc=mathiaskunter@gmail.com \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=r@artagnon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).