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

Re: What is the best way to backport a feature?

From
Björn Steinbrink <b.steinbrink@gmx.de>
Date
Nov 29, 2009, 16:47 UTC
Message-ID
<20091129164748.GB7921@atjola.homenet>
In-Reply-To
<loom.20091129T164518-669@post.gmane.org>
On 2009.11.29 16:28:17 +0000, Peter Weseloh wrote:
Show 11 quoted lines
> Suppose I have the following situation:
>
>   o--o--o                    Release_1.0
>  /    \  \
> o-o-o--o--o-o-o-o-o-o---o--o Mainline
>      \       \       \ /
>       F1--F2--M1--F3--M2     Feature_A
>
> Now I want to backport "Feature_A" to the "Release_1.0" branch so that
> it gets included into the next minor release, i.e. I want to apply the
> commits F1, F2 and F3 onto the "Release_1.0" branch.
> Is there a better way? To me this scenario sounds not unusual but I
> could not find a solution.

What's unusual there is that you merged from Mainline to Feature_A. Usually, the history would look like this:

   o--o--o                    Release_1.0
  /    \  \
 o-o-o--o--o-o-o-o-o-o---o--o Mainline
      \                 /
       F1-----F2------F3      Feature_A
And then you could easily use rebase to get the job done.

Had you known beforehand that Feature_A is a candidate for backporting, you would have even branch from an older commit like this:

   o--o--o                    Release_1.0
  /    \  \
 o-o-o--o--o-o-o-o-o-o---o--o Mainline
  \                     /
   F1--------F2-------F3      Feature_A

Then you could easily merge Feature_A to Release_1.0 as well, without merging anything unrelated.

But that's just for the future...
Given you current history, you could use format-patch + am like this:

git format-patch --stdout --first-parent Mainline..Feature_A > fa.mbox git checkout Release_1.0 git am -3 fa.mbox

The --first-parent options make it follow the first parent of the merge commits only, so the whole stuff on the Mainline branch is ignored. And you just get F1, F2 and F3 in fa.mbox, which you then apply using am.

A long time ago, I hacked the --first-parent thing into rebase, but (of course) the first iteration of the patch wasn't quite perfect and as I've not been scratching my own itch there, I never got around to actually polish the patch so it could get into git.git. Maybe you want to pick it up?

http://thread.gmane.org/gmane.comp.version-control.git/62782
Björn
Previous: Peter WeselohNext: Pascal Obry
Message 2 of 10 in “What is the best way to backport a feature?”
  1. Peter WeselohNov 29, 2009
  2. Björn SteinbrinkNov 29, 2009
  3. Pascal ObryNov 29, 2009
  4. Pascal ObryNov 29, 2009
  5. Michael J GruberNov 29, 2009
  6. Greg A. WoodsNov 30, 2009
  7. Fwd: What is the best way to backport a feature?Peter Weseloh, Nov 29, 2009
  8. Johannes SixtNov 29, 2009
  9. Peter WeselohNov 29, 2009
  10. Björn SteinbrinkNov 29, 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.