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

Re: how to keeping track of cherry-pick?

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 21, 2009, 09:47 UTC
Message-ID
<7v63k9gfdk.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<4976E059.6000404@telenor.com>
Knut Olav Bøhmer <knut-olav.bohmer@telenor.com> writes:
Show 23 quoted lines
> Junio C Hamano wrote:
>> Knut Olav Bøhmer <knut-olav.bohmer@telenor.com> writes:
>> 
>>> svnmerge.py can give us a list of revisions available for merging. The
>>> result is similar to "git log --chery-pick master..dev" The difference
>>> is that svnmerge.py operates on revision-numbers, and --chery-pick looks
>>> at the diffs. The result of that is that when we get a conflict when a
>>> patch is cherry-picked, it will still show up as "available" when I run
>>> "git log --cherry-pick master..dev"
>> 
>> I think you are looking at it a wrong way.
>> 
>> Because subversion (at least the older one) does not keep track of merges,
>> you had to track cherry-picks.  But cherry-pick is not how you usually do
>> things in git.  You keep many topic branches with different doneness, and
>> you merge well-cooked ones to the more stable integration branch while
>> leaving others still cooking.  So what you want to know is not cherry-pick
>> status, but merge status.
>
>
> I was afraid I would get this answer. I know that you change your
> workflow when you migrate to git, but I was looking for a way to resolve
> the situation we are in, due to our old vcs.
Maybe I should rephrase the answer, then.

I had an impression that you made it sound as if svnmerge.py is a tool only meant for a workflow of always cherry-picking, but it actually is not. It also enhances your SVN experience by giving something closer to proper merge tracking. Even though you only mentioned cherry-picks and merge blocking, if you like things offered by svnmerge.py other than these two, you might find that git already has them natively.

When your workflow is based on a single large, unfocused, everything mixed-in, playpen branch, plus one stable integration branch, you have to cherry pick to keep the stable integration branch sane, and you need a good tool to help you keep track of what is cherry picked and what isn't (yet). Maybe your SCM has such a tool natively, or maybe it doesn't and needs a third party tool support (similar to users of older SVN needed to use svnmerge.py for merge tracking) bolted on.

    ---A1--B1--C1--A2--A3--C2--D1--...  playpen kitchen-sink
    ---o---o---o---A1'--A2'--A3'...     stable integration

The workflow when using git is typically merge based, and git lets you manage topic branches well and helps you merge easily by keeping track of merges.

I am reading from http://www.orcaware.com/svn/wiki/Svnmerge.py while I am typing this, but here is a summary:

 (1) Because merge tracking is built-in to git, you do not need "something
     like svnmerge.py" bolted on.  If you have been using topic branches
     in your established SVN-based workflow, you can keep the same
     workflow and git will do the right thing when you merge your
     branches naturally.
 (2) We didn't have need for "cherry-pick tracking" part of what
     svnmerge.py offers, because we do not do cherry-picks as often.
     You can call this shortcoming if you want, but it should be easy for
     you to contribute a patch to add such a tool if you miss this part of
     svnmerge.py; essentially, you need to keep a database of commit
     object names on the "playpen branch" depicted above, and
     corresponding commit objects cherry-picked from them into the
     integration branch.
 (3) We have "listing changes that are available for merging" natively, as
     I've already explained in the previous message.
 (4) Bidirectional merges, merging from multiple branches, reverting
     merges, and merge commit message generation are all native features
     of "git merge".  If you have git, you already have them.  If you do
     not like the merge result, you can always amend it; commit-free-ness
     is listed as if it is a feature but it does not matter here.
 (5) We do not have "merge blocking".  This falls into the same category
     as (2) above.
Previous: Michael J GruberNext: Johannes Schindelin
Message 5 of 6 in “how to keeping track of cherry-pick?”
  1. Knut Olav BøhmerJan 20, 2009
  2. Junio C HamanoJan 21, 2009
  3. Knut Olav BøhmerJan 21, 2009
  4. Michael J GruberJan 21, 2009
  5. Junio C HamanoJan 21, 2009
  6. Johannes SchindelinJan 21, 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.