Skip to contentSkip to conversation

Forward-port a patch using git

DISCUSSION Spelic 2 participants 3 messages Jun 15, 2016

lore
Share & tools
lore

Spelic

author
#0 lore raw

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 .

author
#1 lore raw
Quoted 4 lines · Spelic

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

#2 lore raw
Quoted 5 lines · Spelic

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:

Quoted 7 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