From: Linus Torvalds <torvalds@linux-foundation.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: Ray Lee <ray-lk@madrabbit.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
torvalds@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-acpi@vger.kernel.org
Subject: Re: Please pull ACPI updates
Date: Thu, 17 Jul 2008 13:16:39 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.1.10.0807171304220.2959@woody.linux-foundation.org> (raw)
In-Reply-To: <alpine.LFD.1.10.0807171259010.2959@woody.linux-foundation.org>
On Thu, 17 Jul 2008, Linus Torvalds wrote:
>
> In particular, if something worked for somebody before, it also removes
> the "known good state" from a bisection standpoint, so rebasing actually
> makes things _harder_ to bisect - because now you cannot sanely bisect
> between two versions of the tree (when you mark the old tree "good", it
> has no relevance to the new tree that had all the old history rewritten).
Let me do a made-up example of this just to kind of illustrate the point.
Let's say that _I_ rebased history to always make it linear.
That would obviously make things much "easier" to bisect, since now it's
just a linear list of commits, and bisection is just taking the midpoint
of that list and trying it. Right? Also, I'd fix up the linear list so
that any found bugs are squashed into th code that caused them, so all
_known_ bugs are non-issues from the standpoint of bisection: because the
code you are bisecting already has those removed entirely.
That's a clean nice linear history with no unnecessary breakages (no
compile failures, no other unrelated and solved bugs) for bisection, so
bisecting new bugs must be much simpler, right?
WRONG.
It means that a person who ran my tree as of yesterday, and had a working
setup, but then updated to my tree as of today, and things break, can no
longer bisect sanely AT ALL - because the state that he was at yesterday
is basically completely *gone*, because it has been cleaned-up and
sanitized, since I happened to rewrite history from a week ago due to
finding a bug.
Also, related to the same thing, if that person had some patches of his
own that he was working on on top of the state I had yesterday, since I
rebased, it's now almost impossible for him to be able to judge what is
really _new_ stuff, and what is just the old stuff he was working on,
except it's been cleaned up and sanitized.
But at the same time, the new history is clearly _simpler_, isn't it? Yes,
it is simpler, BUT ONLY IF YOU DON'T TAKE INTO ACCOUNT THAT SOMEBODY
ALREADY SAW AND USED THE _OTHER_ HISTORY YESTERDAY!
I'm shouting, because this is really really important from a very
fundamental standpoint. It's not just important from a git standpoint:
this really is _not_ some odd git-specific implementation issue. No, it's
much much more fundamental than git. It's a very basic fact that woudl be
true with _any_ SCM.
So git just happens to encode that fundamental truth a bit more explicitly
and make it very obvious. Git is very careful at _not_ losing that state
as it existed somewhere yesterday.
So rebasing and cleanups may indeed result in a "simpler" history, but it
only look that way if you then ignore all the _other_ "simpler" histories.
So anybody who rebases basically creates not just one simple history, but
a _many_ "simple" histories, and in doing so actually creates a
potentially much bigger mess than he started out with!
As long as you never _ever_ expose your rewriting of history to anybody
else, people won't notice or care, because you basically guarantee that
nobody can ever see all those _other_ "simpler" histories, and they only
see the one final result. That's why 'rebase' is useful for private
histories.
But even then, any testing you did in your private tree is now suspect,
because that testing was done with the old history that you threw away.
So even if you delete all the old histories and never show them, they kind
of do exist conceptually - they existed in the sense that you tested them,
and you've just hidden the fact that what you release is different from
what you tested.
Linus
next prev parent reply other threads:[~2008-07-17 20:17 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-16 21:45 Andi Kleen
2008-07-16 22:11 ` Rafael J. Wysocki
2008-07-16 23:33 ` Jesse Barnes
2008-07-16 23:45 ` Linus Torvalds
2008-07-16 23:51 ` Jesse Barnes
2008-07-17 0:32 ` Linus Torvalds
2008-07-17 0:53 ` Linus Torvalds
2008-07-17 2:26 ` Jesse Barnes
2008-07-17 2:56 ` Linus Torvalds
2008-07-17 6:45 ` Andi Kleen
2008-07-17 15:06 ` Linus Torvalds
2008-07-17 6:40 ` Andi Kleen
2008-07-17 15:03 ` Linus Torvalds
2008-07-17 18:49 ` Len Brown
2008-07-17 19:12 ` Harvey Harrison
2008-07-17 19:50 ` Andi Kleen
2008-07-17 19:12 ` Linus Torvalds
2008-07-17 19:16 ` Linus Torvalds
2008-07-17 21:15 ` J. Bruce Fields
2008-07-17 23:11 ` [PATCH] Revert duplicate "dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled" commit (was: Please pull ACPI updates) Thomas Gleixner
2008-07-17 23:25 ` [PATCH] Revert duplicate "dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled" commit Andi Kleen
2008-07-18 0:07 ` [PATCH] Revert duplicate "ACPI: don't walk tables if ACPI was disabled" commit (was: Please pull ACPI updates) Thomas Gleixner
2008-07-17 6:47 ` Please pull ACPI updates Andi Kleen
2008-07-17 15:18 ` Linus Torvalds
2008-07-17 15:47 ` Linus Torvalds
2008-07-17 16:02 ` Linus Torvalds
2008-07-17 16:23 ` Andi Kleen
2008-07-17 19:11 ` Ray Lee
2008-07-17 19:49 ` Andi Kleen
2008-07-17 20:01 ` Linus Torvalds
2008-07-17 20:14 ` Andi Kleen
2008-07-17 20:16 ` Linus Torvalds [this message]
2008-07-17 20:28 ` Linus Torvalds
2008-07-18 13:25 ` Olivier Galibert
2008-07-18 15:57 ` Ray Lee
2008-07-17 20:34 ` Andi Kleen
2008-07-17 20:11 ` Ray Lee
2008-07-17 20:29 ` Andi Kleen
2008-07-18 6:39 ` david
2008-07-24 20:36 Andi Kleen
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.0807171304220.2959@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ray-lk@madrabbit.org \
--cc=rjw@sisk.pl \
--cc=torvalds@linuxfoundation.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
all inboxes | Powered by JetHome®