git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Edmundo Carmona Antoranz <eantoranz@gmail.com>
Cc: Git List <git@vger.kernel.org>
Subject: Re: [RFC/PATCH 1/2] rebuash - squash/rebase in a single step
Date: Sun, 30 Jun 2019 18:39:51 -0400	[thread overview]
Message-ID: <20190630223951.GB21696@sigill.intra.peff.net> (raw)
In-Reply-To: <CAOc6etYMzOpEDs1GpLChAEhp2SbZcKjO82S=qm4P-t6SkUEWcw@mail.gmail.com>

On Sun, Jun 30, 2019 at 09:09:31AM -0600, Edmundo Carmona Antoranz wrote:

> >   git merge --squash feature
> >
> > I get the same merge that rebuash is doing (with R6 as the merge base,
> > so we see F5 and R7 conflicting with each other). And then when I finish
> > it with "git commit", the result is a linear strand with M3 at the tip
> > (and its commit message is even auto-populated with information from the
> > squashed commits).
> 
> From the point of view of the revisions that you produce in the end,
> it's the same thing, but you are not rebasing/squashing your feature
> branch, you are moving your upstream branch to where you want the
> squashed/rebased branch to be. So, in fact you would need more steps,
> something like (starting from your feature branch being checked out):

Ah, OK, that's what I was missing. I agree that "merge --squash" isn't
quite what you want, then. It's sort of a "reverse squash": do the
merge, but use the _other_ side as the parent of the new squash commit.

I wonder if it might be easier to implement as an option to git-merge.
I noticed when I hit a conflict with rebuash that it emphatically told
me not to use "git commit" once I had resolved everything. If this were
just a special case of a merge, that might be a bit more seamless
(though I imagine it might still require teaching git-commit about the
feature, since it generally wants to mark HEAD as the parent).

> I think it makes more sense in terms of development flow of feature
> branches, if you know in the end you will give up a squashed branch:

Yeah, I agree it is a separate operation that by itself makes sense. I
do wonder a little why you'd care about squashing on the branch. If
you're eventually going to squash the whole thing anyway, you don't care
about a messy history. So you can just continue to back-merge from
master into the feature branch and build on top.

But perhaps the squashed version is easier to work with for further
modifications? I'm not sure how, though. Certainly in your example
rewriting changes in F1 with "rebase --interactive" would be a pain. But
I think the end-state of the tree after your rebuash is identical to
what you'd get by just merging from master. So in either case, just
building new work on top should be the same.

> But, as you said, it's not like it's not possible to do it (with a
> little more effort) with available tools like merge --squash

Yeah, but I agree with you that just because it is possible to do
something does not mean that it is not a good idea to make the workflow
easier or safer.

I'm still not quite sure of the greater workflow where having the
rebuash-ed commit on the feature branch is more useful than just having
a merge from master.

-Peff

  reply	other threads:[~2019-06-30 22:39 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-30  5:18 [RFC/PATCH 1/2] rebuash - squash/rebase in a single step Edmundo Carmona Antoranz
2019-06-30  5:18 ` [RFC/PATCH 2/2] rebuash - support for status Edmundo Carmona Antoranz
2019-06-30  5:28   ` Edmundo Carmona Antoranz
2019-06-30  6:53 ` [RFC/PATCH 1/2] rebuash - squash/rebase in a single step Jeff King
2019-06-30 15:09   ` Edmundo Carmona Antoranz
2019-06-30 22:39     ` Jeff King [this message]
2019-07-01  1:37       ` Edmundo Carmona Antoranz
2019-07-01 18:50         ` Junio C Hamano
2019-07-01 20:48           ` Edmundo Carmona Antoranz
2019-07-01 18:35   ` Junio C Hamano
2019-07-02 11:37     ` Derrick Stolee
2019-07-02 17:20       ` Junio C Hamano
2019-07-02 19:30         ` Johannes Sixt

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=20190630223951.GB21696@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=eantoranz@gmail.com \
    --cc=git@vger.kernel.org \
    /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).