git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH RFC] rebase: add --revisions flag

From
MTMichael S. Tsirkin <mst@redhat.com>
Date
Dec 9, 2009, 14:02 UTC
Message-ID
<20091209140236.GL2977@redhat.com>
In-Reply-To
<20091209131945.GB30218@atjola.homenet>
On Wed, Dec 09, 2009 at 02:19:45PM +0100, Björn Steinbrink wrote:
Show 14 quoted lines
> On 2009.12.08 22:00:17 +0200, Michael S. Tsirkin wrote:
> > On Tue, Dec 08, 2009 at 08:11:07PM +0100, Björn Steinbrink wrote:
> > > So you can already do what you want to do, but wrapping it in a single
> > > porcelain might still be useful because it's obviously a  lot easier and
> > > safer that way. That said, I wonder what kind of workflow you're using
> > > though, and why you require that feature. I've never needed something
> > > like that.
> > 
> > I need this often for many reasons:
> > -	Imagine developing a patchset with a complex bugfix on master branch.
> > 	Then I decide to also apply (backport) this patchset to stable branch.
> 
> Hm, I'd also imagine that you want a separate branch then, and not
> directly mess up the stable branch,

Well, directly working with a stable branch is easier, so yes, I want to mess it up: this is just my local tree, if anything goes wrong I just don't push or "reset --hard origin/stable".

Show 5 quoted lines
> so I'd do:
> git branch foo-stable foo # Create a branch for the backport
> git rebase --onto stable master foo-stable # Backport
> 
> Now you got your backported version and can merge it to "stable".

The annoying thing is that merge step. I can create a merge commit if I mistype things, and I do not want any merge commits, I want to create linear history.

Show 11 quoted lines
> Common wisdom is do things the other way around though. Create the
> bugfix for the oldest branch that it applies to, then merge it forward,
> either doing:
> 
> "bugfix -> stable" and "stable -> master" merges, or
> "bugfix -> stable" and "bugfix -> master" merges.
> 
> That approach has the advantage that you don't get multiple commits
> doing the same thing, which you get with rebasing/cherry-picking.
> 
> IIRC the gitworkflows manpage describe that in some more detail.

I know. The advantage of making all changes to master first is that this way a change gets more review and testing before being applied to stable. Further, often different people maintain master and stable branches.

Show 10 quoted lines
> > -	Imagine developing a bugfix/feature patchset on master branch.
> > 	Then I decide the patchset is too large/unsafe and want to
> > 	switch it to staging branch.
> 
> Hm, so you have a topic branch "foo" based upon master, but it's too
> experimental so you don't want to merge it to master, but "staging". I
> don't see why you even have to rebase it then. "staging" is likely ahead
> of master, so the merge base of "foo" and "master" is also reachable
> through "staging", and simply merging "foo" to "staging" should work
> without any ill-effects.

Yes but I want my development history to be linear, so that format patch rebase -i etc work well.

Show 15 quoted lines
> > -	I have a large queue of patches on staging branch, I decide that
> > 	a range of patches is mature enough for master.
> 
> Basically, same deal as with the first two cases. If the series is
> directly on "staging" (i.e. you didn't create a topic branch), you can
> create one now:
> git branch foo $last_commit_for_foo
> git rebase --onto master $first_commit_for_foo^ foo
> 
> And you got your backported topic branch for "foo".
> 
> Or you already have a topic branch "foo-staging", but it's based upon
> some commit only in "staging" but not in "master", so a plain merge
> would mess things up. Same deal as with backporting from "master" to
> "stable"

Yes, I understand that creating a temporary branch and checking it out then merging it will make rebase do what I want. The only disadvantage is that I need to remember where I am in the process, while an "atomic" command does this for me.

Show 5 quoted lines
> And in this case it's also true that basing the topic branches on
> "master" instead of "staging" makes things easier. That way, you can
> merge to either "staging" or "master" without any ill-effects.
> 
> Björn
As above, I do not want merges.
Previous: Björn SteinbrinkNext: Miles Bader
Message 13 of 43 in “rebase: add --revisions flag”
  1. rebase: add --revisions flagMichael S. Tsirkin, Dec 8, 2009
  2. Björn SteinbrinkDec 8, 2009
  3. Michael S. TsirkinDec 8, 2009
  4. Björn SteinbrinkDec 8, 2009
  5. Michael S. TsirkinDec 8, 2009
  6. Björn SteinbrinkDec 8, 2009
  7. Michael S. TsirkinDec 8, 2009
  8. Björn SteinbrinkDec 8, 2009
  9. Michael S. TsirkinDec 8, 2009
  10. Björn SteinbrinkDec 8, 2009
  11. Michael S. TsirkinDec 8, 2009
  12. Björn SteinbrinkDec 9, 2009
  13. Michael S. TsirkinDec 9, 2009
  14. Miles BaderDec 9, 2009
  15. Junio C HamanoDec 8, 2009
  16. Sverre RabbelierDec 8, 2009
  17. Christian CouderDec 9, 2009
  18. Christian CouderDec 9, 2009
  19. Sverre RabbelierDec 9, 2009
  20. Peter KreftingDec 9, 2009
  21. Michael S. TsirkinDec 9, 2009
  22. Peter KreftingDec 9, 2009
  23. Björn SteinbrinkDec 9, 2009
  24. Andreas SchwabDec 9, 2009
  25. Björn SteinbrinkDec 9, 2009
  26. Michael S. TsirkinDec 9, 2009
  27. Björn SteinbrinkDec 9, 2009
  28. Junio C HamanoDec 9, 2009
  29. Björn SteinbrinkDec 10, 2009
  30. Junio C HamanoDec 10, 2009
  31. Björn SteinbrinkDec 11, 2009
  32. Peter KreftingDec 9, 2009
  33. Björn SteinbrinkDec 9, 2009
  34. Peter KreftingDec 10, 2009
  35. Björn SteinbrinkDec 10, 2009
  36. Michael S. TsirkinDec 9, 2009
  37. Matthieu MoyDec 9, 2009
  38. Matthieu MoyDec 9, 2009
  39. Michael S. TsirkinDec 9, 2009
  40. Björn SteinbrinkDec 9, 2009
  41. Michael S. TsirkinDec 9, 2009
  42. Junio C HamanoDec 9, 2009
  43. David KågedalDec 13, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.