git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Pratik Karki <predatoramigo@gmail.com>,
	git@vger.kernel.org, christian.couder@gmail.com,
	sbeller@google.com, alban.gruin@gmail.com
Subject: Re: [PATCH 02/11] builtin rebase: support `git rebase --onto A...B`
Date: Sun, 26 Aug 2018 20:36:25 +0200 (DST)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.1808241821470.73@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <xmqq1sb8hdvd.fsf@gitster-ct.c.googlers.com>

Hi Junio,

On Wed, 8 Aug 2018, Junio C Hamano wrote:

> Pratik Karki <predatoramigo@gmail.com> writes:
> 
> > This commit implements support for an --onto argument that is actually a
> > "symmetric range" i.e. `<rev1>...<rev2>`.
> >
> > The equivalent shell script version of the code offers two different
> > error messages for the cases where there is no merge base vs more than
> > one merge base. Though following the similar approach would be nice,
> > this would create more complexity than it is of current. Currently, for
> 
> Sorry, but it is unclear what you mean by "than it is of current."
> Do you mean we leave it broken at this step in the series for now
> for expediency, with the intention to later revisit and fix it, or
> do you mean something else?

I suggested to drop the distinction, in favor of simpler code. Not for the
time being, but for good.

I reworded the commit message thusly:

    builtin rebase: support `git rebase --onto A...B`

    This commit implements support for an --onto argument that is actually a
    "symmetric range" i.e. `<rev1>...<rev2>`.

    The equivalent shell script version of the code offers two different
    error messages for the cases where there is no merge base vs more than
    one merge base.

    Though it would be nice to retain this distinction, dropping it makes it
    possible to simply use the `get_oid_mb()` function. Besides, it happens
    rarely in real-world scenarios.

    Therefore, in the interest of keeping the code less complex, let's just
    use that function, and live with an error message that does not
    distinguish between those two error conditions.

> > @@ -387,7 +389,11 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
> >  	if (!options.onto_name)
> >  		options.onto_name = options.upstream_name;
> >  	if (strstr(options.onto_name, "...")) {
> > -		die("TODO");
> > +		if (get_oid_mb(options.onto_name, &merge_base) < 0)
> > +			die(_("'%s': need exactly one merge base"),
> > +			    options.onto_name);
> > +		options.onto = lookup_commit_or_die(&merge_base,
> > +						    options.onto_name);
> 
> The original is slightly sloppy in that it will misparse
> 
> 	rebase --onto 'master^{/log ... message}'
> 
> and this shares the same, which I think is probably OK.

I did run into this recently, but not with an `--onto` option. I forgot
the details (I meant to write it down, and forgot that, too).

Sorry for musing, back on the topic. Yes, it shares the same, and *that*
makes it okay. Remember: this patch series is not about improving `git
rebase` at all. It is about converting from shell script to builtin.

> When this actually becomes problematic, the original can easily be
> salvaged by making it to fall back to the same peel_committish in its
> else clause; I am not sure if this C rewrite is as easily be fixed the
> same way, though.

I will make a note so that I hopefully won't forget.

Thanks,
Dscho

> 
> >  	} else {
> >  		options.onto = peel_committish(options.onto_name);
> >  		if (!options.onto)
> 

  reply	other threads:[~2018-08-26 18:36 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-08 13:48 [GSoC] [PATCH 00/11] A minimal builtin rebase Pratik Karki
2018-08-08 13:48 ` [PATCH 01/11] builtin rebase: support --onto Pratik Karki
2018-08-08 19:02   ` Junio C Hamano
2018-08-24 16:21     ` Johannes Schindelin
2018-08-08 13:48 ` [PATCH 02/11] builtin rebase: support `git rebase --onto A...B` Pratik Karki
2018-08-08 19:12   ` Junio C Hamano
2018-08-26 18:36     ` Johannes Schindelin [this message]
2018-08-08 13:48 ` [PATCH 03/11] builtin rebase: handle the pre-rebase hook (and add --no-verify) Pratik Karki
2018-08-08 19:32   ` Junio C Hamano
2018-08-27 12:15     ` Johannes Schindelin
2018-08-08 13:48 ` [PATCH 04/11] builtin rebase: support --quiet Pratik Karki
2018-08-08 18:31   ` Stefan Beller
2018-08-08 19:37     ` Junio C Hamano
2018-08-27 12:31       ` Johannes Schindelin
2018-08-08 13:48 ` [PATCH 05/11] builtin rebase: support the `verbose` and `diffstat` options Pratik Karki
2018-08-08 13:48 ` [PATCH 06/11] builtin rebase: require a clean worktree Pratik Karki
2018-08-08 13:48 ` [PATCH 07/11] builtin rebase: try to fast forward when possible Pratik Karki
2018-08-08 13:48 ` [PATCH 08/11] builtin rebase: support --force-rebase Pratik Karki
2018-08-08 18:51   ` Stefan Beller
2018-08-24 16:10     ` Johannes Schindelin
2018-08-08 13:48 ` [PATCH 09/11] builtin rebase: start a new rebase only if none is in progress Pratik Karki
2018-08-08 18:59   ` Stefan Beller
2018-08-24 16:13     ` Johannes Schindelin
2018-08-08 13:48 ` [PATCH 10/11] builtin rebase: only store fully-qualified refs in `options.head_name` Pratik Karki
2018-08-08 13:48 ` [PATCH 11/11] builtin rebase: support `git rebase <upstream> <switch-to>` Pratik Karki
2018-08-08 16:03   ` Duy Nguyen
2018-08-08 18:52     ` Johannes Schindelin
2018-09-04 21:27 ` [PATCH v2 00/11] A minimal builtin rebase Johannes Schindelin via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 01/11] builtin rebase: support --onto Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 02/11] builtin rebase: support `git rebase --onto A...B` Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 03/11] builtin rebase: handle the pre-rebase hook and --no-verify Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 04/11] builtin rebase: support --quiet Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 05/11] builtin rebase: support the `verbose` and `diffstat` options Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 06/11] builtin rebase: require a clean worktree Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 07/11] builtin rebase: try to fast forward when possible Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 08/11] builtin rebase: support --force-rebase Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 09/11] builtin rebase: start a new rebase only if none is in progress Pratik Karki via GitGitGadget
2018-09-04 21:27   ` [PATCH v2 10/11] builtin rebase: only store fully-qualified refs in `options.head_name` Pratik Karki via GitGitGadget
2018-09-08  8:52     ` SZEDER Gábor
2018-09-10 16:55       ` Junio C Hamano
2018-09-10 20:25         ` SZEDER Gábor
2018-09-04 21:27   ` [PATCH v2 11/11] builtin rebase: support `git rebase <upstream> <switch-to>` Pratik Karki via GitGitGadget

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

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

  git send-email \
    --in-reply-to=nycvar.QRO.7.76.6.1808241821470.73@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=alban.gruin@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=predatoramigo@gmail.com \
    --cc=sbeller@google.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.
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).