threads / discuss / 25886

Forward-port a patch using git

Subject: Forward-port a patch using git

## tl;dr

3 messages between Dec 1, 2010 and Dec 1, 2010.

replies: 2people: 2as markdown or json

Spelic· Dec 1, 2010, 15:37 UTC · lore

Hi all I have patches (xyz.patch files) which apply cleanly to kernel 2.6.36 and 2.6.36.1 and do not apply cleanly on 2.6.37-rc4 (I mean they do apply but with massive offsets...) I would like to forward-port them to 2.6.37-rc4, i.e. create equivalent patch files that would apply cleanly on 2.6.37-rc4 with zero offsets.

I have thought that there should be some git mechanism to confirm that such massive offsets which "patch" sees are actually correct and not false-positives, and are caused by the commits from 2.6.36 to 2.6.37-rc4. There should be some mechanism in git to track line shifts in source files caused by commits... After confirming this, Git should create for me equivalent patch files that apply cleanly to 2.6.37-rc4 that I can give to other people.

Is it possible? I am unfortunately a newbie with git. Can you help me?
Thank you
PS: I have downloaded the linux-2.6-stable git repository containing all 
needed revisions: v2.6.36, v2.6.36.1 and v2.6.37 .
Spelic· Dec 1, 2010, 18:11 UTC · re: Spelic · lore

Re: Forward-port a patch using git

On 12/01/2010 04:37 PM, Spelic wrote:
Show 8 quoted lines
> Hi all
> I have patches (xyz.patch files) which apply cleanly to kernel 2.6.36 
> and 2.6.36.1 and do not apply cleanly on 2.6.37-rc4 (I mean they do 
> apply but with massive offsets...)
> I would like to forward-port them to 2.6.37-rc4, i.e. create 
> equivalent patch files that would apply cleanly on 2.6.37-rc4 with 
> zero offsets.
>
I found it myself, sorry for having asked.
It was:

checkout v2.6.36 apply 1 patch commit apply 1 patch commit ... rebase v2.6.37-rc4 git format-patch -o <destdir> -numpatches

Jeff King· Dec 1, 2010, 18:16 UTC · re: Spelic · lore

Re: Forward-port a patch using git

On Wed, Dec 01, 2010 at 07:11:23PM +0100, Spelic wrote:
Show 5 quoted lines
> I found it myself, sorry for having asked.
> 
> It was:
> 
> checkout v2.6.36

Be aware that checking out the v2.6.36 tag will mean you are not on any branch. So this will work fine:

Show 7 quoted lines
> apply 1 patch
> commit
> apply 1 patch
> commit
> ...
> rebase v2.6.37-rc4
> git format-patch -o <destdir> -numpatches

But at the end, you will not have any branch tip pointing to your rebased work. If all you want are the patches as output, then that's fine. But you may want to do:

  git checkout -b some-useful-name v2.6.36

as the first step instead, which means you can come back to your rebased work later as "some-useful-name".

-Peff

← back to recent threads