From: Linus Torvalds <torvalds@linux-foundation.org>
To: David Brown <git@davidb.org>
Cc: "Björn Steinbrink" <B.Steinbrink@gmx.de>, git@vger.kernel.org
Subject: Re: Cherry picking instead of merges.
Date: Thu, 3 Jul 2008 22:30:32 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.1.10.0807032221190.2815@woody.linux-foundation.org> (raw)
In-Reply-To: <20080704044032.GA4445@old.davidb.org>
On Thu, 3 Jul 2008, David Brown wrote:
>
> A cherry-picked tree would allow for an easy bisect, since all of the
> intermediary versions would work. If I somehow knew magical points within
> the other tree I could do some number of merges and the bisect would still
> work. I suppose I could do the merges one at a time, but it would make the
> history rather verbose.
Why do you want to worry so much about bisecting the merge?
You should basically expect that normally, a merge doesn't cause new bugs
in itself. And if it does, the most common case is a fairly obvious
mismerge (we've had a number of those in the kernel, but they weren't all
that mysterious). So _planning_ for a subtle bisection failure sounds a
bit strange and counter-productive.
So don't plan for it, and don't make it a primary issue for your workflow.
Then, *after* you have a merge, and the unlucky thing happens where the
merge is actually the thing that introduces the bug, and it's not obvious
what the exact interaction is, and bisection didn't help you pinpoint it
(because it really was the merge), *that* is when you might then choose to
re-do the rebase in a temporary branch, and then bisect that re-linearized
history.
So basically:
- keep the history clean and obvious
- make it fairly straightforward and don't worry about the unlikely case.
- don't do something painful just because bad things _can_ happen (they
can happen regardless of what you do)
- because in the unlikely situation that bad things happen, you can
always then go back and do things the other way around and pinpoint
where the fault is that way.
IOW, let's say that you really do bisect things down to a merge and cannot
see what the fault in that merge is, you can literally do
# create a test-branch with the 'remote' side of the merge
git checkout -b test-branch merge^2
# rebase that remote side on top of the local side
git rebase merge^
and now you've linearized the merge temporarily just to be able to bisect
in that temporary branch what the bad interaction is. But once you've
bisected it, the temporary branch is again just junk - there's no real
value in saving it, because once you know _why_ the bug happened, you're
just better off going back to the original history and just fixing it (and
documenting the bug through the fix, rather than by addign extra-ugly
history).
Linus
next prev parent reply other threads:[~2008-07-04 5:32 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-03 18:26 Cherry picking instead of merges David Brown
2008-07-03 20:13 ` Alex Riesen
2008-07-03 20:15 ` Avery Pennarun
2008-07-03 20:53 ` David Brown
2008-07-03 21:18 ` Samuel Tardieu
2008-07-03 21:18 ` Linus Torvalds
2008-07-03 22:39 ` David Brown
2008-07-04 0:10 ` Björn Steinbrink
2008-07-04 4:40 ` David Brown
2008-07-04 5:30 ` Linus Torvalds [this message]
2008-07-04 6:36 ` Johannes Sixt
2008-07-04 16:47 ` Linus Torvalds
2008-07-04 0:39 ` Linus Torvalds
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=alpine.LFD.1.10.0807032221190.2815@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=B.Steinbrink@gmx.de \
--cc=git@davidb.org \
--cc=git@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).