With no offense intended, I disagree.
The whole point of having things under revision control is so that you
can browse them, in the order that the events happened, not in some random
order which corresponds to when you happened to find some old kernel.
As to the tree itself, I'll take responsibility for checking in what we have
archived to date and providing that tree as a basis for future work. Once
we have that basis, there are no ordering problems, at least none that you
need to get around.
Let me try and be a bit more clear about that last claim. It's true that
if you are at version 1.100 in your copy of the source and patch which
consists of the diffs from 1.200 .. 1.203 comes by, BitKeeper will not
allow you to patch that into your tree. Under no circumstances, not even
if Cindy Crawford showed up and begged, would I change that behaviour (she's
welcome to show up and try to convince me, however :-)
The reason is that "the source" is a distributed thing. There are
copies of the same files all over the world. You guys all want that
managed well so that you can do your work in a distributed fashion with
a minimal amount of fuss. If you start changing around the order of
events in the revision control graph, there is nothing that any tool can
do to help you. On the other hand, if you don't violate the ordering,
then I can answer questions, programatically, like "does the latest
release from Linus have everything that is in my tree or not?"
Another example of where this ordering can be an issue is Linus'
infamous editing of unified diffs before he applies them to his tree.
That is a problem because the diffs represent the events (deltas) made
by someone else. When Linus edits those diffs, that's a new event.
If he applies the modified diffs before applying the pristine diffs,
then when you ask "are my diffs in the tree?" the answer will be "no"
because your diffs aren't in the tree. What is in the tree is your diffs
plus Linus' changes, *as one delta*. And that delta is different than
the one delta you made in your tree.
So how do we get around this? The correct set of changes is whatever
you did plus whatever Linus did as two distinct events. But Linus is
in a hurry, so he wants to *think* that he can just edit the diffs
and apply them. So I'll make a little tool, maybe we can call the
"linustool", which lets him hack on the diffs and then applies them for
him. But what it really does is save away a copy of the diffs, get the
(possibly hacked) diffs from Linux when he says "apply", diff the diffs,
if they are changed, apply the first set as your changes, and then apply
the mods to that set as his change. It sounds complicated and I'm sure
it will be a little dicey, but I'm also sure I can build that tool.
So everyone is happy - Linus gets to work the way he wants and we can
still preserve the invariants required to have a distributed source base.
If this is clear as mud, you're welcome to send me mail with questions or
if hte list can stand it, we can discuss it here.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
Please read the FAQ at http://www.tux.org/lkml/