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

Re: Rebase safely (Re: cherry picking and merge)

From
NWNico Williams <nico@cryptonector.com>
Date
Aug 8, 2014, 18:27 UTC
Message-ID
<20140808182735.GC21575@localhost>
In-Reply-To
<894B9D26-F8C5-4C82-B04C-3B31094C2293@comcast.net>
On Fri, Aug 08, 2014 at 10:34:43AM -0700, Mike Stump wrote:
Show 15 quoted lines
> On Aug 6, 2014, at 10:11 PM, Nico Williams <nico@cryptonector.com> wrote:
> > Nah.  Sun managed this for decades without a hitch, and for products
> > much larger than GCC.  See above.
> 
> Ok.  Ah, ok, perfect.  I see how that method of working would cure the
> cherry-pick and merge don’t work problem mentioned at the top of the
> thread.
> 
> > Do some experiments based on the above hardcopy.  If that doesn't
> > convince you that it works, oh well, I'll have given it a good try.
> 
> Thank you for taking the time to diagram that as it appears to violate
> everyones how to use git guide.   I see the workflow does an onto,
> which was the ‘fix’ people talked about on stack overflow, and I see
> just how things would work.

There's nothing scary about --onto. You're saying "figure out which are my local commits (the ones on top of the previous upstream) and pick them onto the new upstream".

We only need to do it manually (though it can be scripted[*]) because git doesn't track rebase history so that it can be done automatically.

[*] And then there's Tony Finch's
    https://git.csx.cam.ac.uk/x/ucs/git/git-repub.git , which is kinda
    awesome!
> If the old master branches are deleted and gc is run, then all the old
> references go away, and then the refs from email and bugzilla then
> don’t work.  Did you guys ever remove them and then prune (or gc)?

Product gates' repos and snapshots stuck around forever, though it was Teamware, and finding really old ones wasn't necessarily easy, particularly since their names didn't always reflect product names.

Prominent project gate repos and their snapshots also stuck around forever.

Lesser project gate repos tended to be as ephemeral as the project.
> Now, the biggest issue, if that is recognized as `fixing’ the
> cherry-pick problem, then certainly the problem is understood to be a
> problem.  If one recognized it as a problem, then one can envision

Not really. This isn't about git. We followed a rebase-only workflow with VCSes that nominally didn't support rebase. We did it because it was easier on everyone and kept history in the upstream clean. We didn't do it because git has issues when combining merge and cherry-pick.

> cherry-pick and merge working together so that the problem doesn’t
> need fixing in the first place.  And, if it doesn’t need fixing, then

If you buy into the Sun model then this is all a non-issue. If you don't then I think you have other problems (because I have bought into the Sun model) :)

> the cost of the solution isn’t needed either.  The biggest problem
> with git, is that two features don’t work nicely together when they
> [...]

The Sun model has no additional cost. It moves costs around so that the people dealing with conflicts are the downstreams, not the upstreams, and that's exactly as it should be.

(Keep in mind that Solaris gates tended to have large numbers of commits on any given day, so it was quite common that one would have to rebase multiple times before successfully pushing. For large projects with long test cycles the gates would close to avoid the need to rebase and re-test.)

> I still favor fixing the underlying problem with cherry-pick and merge
> not working.  :-)  That said, I see how to work around the bug with
> rebase, if I need to.
IMO it could be done, but I can't help that.
> I wish the top google hit were your guide and I wish I never saw all
> the other pages…  I see now your position, and I see why all the
Me too!  I should blog it.
> guides are wrong, if you know just how to use rebase.  I wish the git
> documentation were improved to say as the first sentence under
The Sun model is not the only way to use git though.
Show 6 quoted lines
> cherry-pick, this feature sucks and doesn’t really work well, it can
> cause excess merge conflicts.  rebase can be used to work around the
> bugs in cherry-pick for now.  And under rebase, instead of saying what
> it said now, that how one can can trivially and effortlessly use git,
> instead of saying, Do not rebase commits that you have pushed to a
> public repository which I now see is wrong.

I'm glad you understand the Sun model now. You should evaluate its applicability to your use case on its own merits. Don't use it just to workaround a problem in git; use it because it's good, or don't use it because it doesn't fit your team's needs.

Nico
Previous: Mike StumpNext: Mike Stump
Message 42 of 43 in “cherry picking and merge”
  1. Mike StumpAug 1, 2014
  2. brian m. carlsonAug 1, 2014
  3. Jakub NarębskiAug 1, 2014
  4. Mike StumpAug 1, 2014
  5. Philip OakleyAug 1, 2014
  6. Mike StumpAug 1, 2014
  7. Philip OakleyAug 2, 2014
  8. Philip OakleyAug 2, 2014
  9. Sam VilainAug 1, 2014
  10. Mike StumpAug 1, 2014
  11. Nico WilliamsAug 1, 2014
  12. Alex DavidsonAug 2, 2014
  13. Mike StumpAug 6, 2014
  14. Rebase safely (Re: cherry picking and merge)Nico Williams, Aug 6, 2014
  15. Nico WilliamsAug 6, 2014
  16. Mike StumpAug 1, 2014
  17. Keller, Jacob EAug 21, 2014
  18. Keller, Jacob EAug 21, 2014
  19. Nico WilliamsAug 1, 2014
  20. Mike StumpAug 1, 2014
  21. Nico WilliamsAug 1, 2014
  22. Jonathan NiederAug 1, 2014
  23. Jonathan NiederAug 1, 2014
  24. Nico WilliamsAug 1, 2014
  25. Junio C HamanoAug 1, 2014
  26. Nico WilliamsAug 1, 2014
  27. Junio C HamanoAug 1, 2014
  28. Jakub NarębskiAug 6, 2014
  29. Nico WilliamsAug 6, 2014
  30. Junio C HamanoAug 6, 2014
  31. Junio C HamanoAug 6, 2014
  32. Mike StumpAug 1, 2014
  33. Mike StumpAug 1, 2014
  34. Jonathan NiederAug 1, 2014
  35. Fwd: cherry picking and mergeJakub Narębski, Aug 1, 2014
  36. Mike StumpAug 1, 2014
  37. Philip OakleyAug 2, 2014
  38. Jakub NarębskiAug 6, 2014
  39. Mike StumpAug 6, 2014
  40. Nico WilliamsAug 7, 2014
  41. Mike StumpAug 8, 2014
  42. Nico WilliamsAug 8, 2014
  43. Fwd: Rebase safely (Re: cherry picking and merge)Mike Stump, Aug 8, 2014

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.