From: Junio C Hamano <junkio@cox.net>
To: Jeff Garzik <jeff@garzik.org>
Cc: Git Mailing List <git@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: kernel cherry UN-picking?
Date: Fri, 11 May 2007 15:09:14 -0700 [thread overview]
Message-ID: <7vbqgr9fn9.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <7vhcqj9g8r.fsf@assigned-by-dhcp.cox.net> (Junio C. Hamano's message of "Fri, 11 May 2007 14:56:20 -0700")
Junio C Hamano <junkio@cox.net> writes:
> Jeff Garzik <jeff@garzik.org> writes:
>
>> So, I merge the next batch of net driver patches. After I merge a PPP
>> patch, deep in the pile-o-patches, Andrew says "I shouldn't have sent
>> that to you, don't apply it" ;-)
>>
>> Right now, my process for reversing this damage is to start over:
>> create a new branch, manually double-click the mouse on each commit in
>> the "damaged" branch, and git-cherrypick it. Very, very time
>> consuming when you have more than a couple commits.
>
> Do the commits on the branch being rebuilt form a single strand
> of pearls without any merges? If that is the case, what I would
> do is:
>
> git heckout thatbranch
> git format-patch -o ./+outdir linus
> rm ./+outdir/0XXX-that-unwanted-patch.patch
> git reset --hard linus
> git am ./+outdir/????-*.patch
Ok, you answered that your branch involves a merge from Linville
tree.
You would need to segment things then.
Suppose you have something like this (you may have more than one
such merge but the principle is the same):
U---o---o---o---M---x---o---o---o---T
/
Linville o---o
Up to 'U' you have already sent upstream and no need for
resending. 'M' is merge with Linville tree. 'x' is the bad
one, and 'o' are good ones. 'T' is the tip of your net driver
branch.
First find out 'x'. Then
git format-patch -o ./outdir x..T
would format everything starting from (but excluding) 'x' up to
'T'.
Then
git reset --hard x^
git am ./outdir/*.patch
would rebuild:
U---o---o---o---M---x---o'--o'--o'--T'
/
Linville o---o
A variant that needs "segmenting" is if the bad one is before
the merge, like this:
U---o---x---b---M---o---o---o---o---T
/
Linville o---a
First you need to note 'a' (tip of Linville you pulled) and 'b'
(tip of you before you pulled from Linville). Then:
git format-patch -o ./outdir-1 x..b
git format-patch -o ./outdir-2 M..T
git reset --hard x^
git am ./outdir-1/*.patch
would give you this:
U---o-------b'
Linville o---a
and leave you at b (rebased not to contain the bad one). Then
you redo the Linville merge:
U---o-------b'--M'
/
Linville o---a
And finally apply the rest:
git am ./outdir-2/*.patch
to arrive at:
U---o-------b'--M'--o'--o'--o'--o'--T'
/
Linville o---a
next prev parent reply other threads:[~2007-05-11 22:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-11 21:31 kernel cherry UN-picking? Jeff Garzik
2007-05-11 21:55 ` Andrew Morton
2007-05-11 21:56 ` Jeff Garzik
2007-05-15 2:39 ` Josef Sipek
2007-05-11 21:56 ` Junio C Hamano
2007-05-11 22:09 ` Junio C Hamano [this message]
2007-05-11 22:11 ` Junio C Hamano
2007-05-12 13:39 ` Jan Harkes
2007-05-12 14:01 ` Jan Harkes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vbqgr9fn9.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=akpm@linux-foundation.org \
--cc=git@vger.kernel.org \
--cc=jeff@garzik.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.