P.S. (About mercurial and shared cvs environments.)
Rob Landley
rob at landley.net
Thu Aug 3 16:23:32 UTC 2006
Some people have wondered why I'm so interested in a distributed resource
control system like git or mercurial. Since I haven't got net access on the
bus ride to the office, I might as well explain myself.
What I'm really looking forward to is being able to able to separate the "ok,
I've now finished a big project, let me save/publish that revision"
from "let's merge with other people's changes and fix up the conflicts".
Right now, doing #1 means it's time to do #2. Being done means you're not
done. I hate that. I have a quick fix to umount.c queued up that needed to
go in after the other big patch. (I want to keep them separate because that
way you can tell what broke what if there's a problem, it's simple repository
hygiene.) And here it's interrupting me as I try to catch a darn bus.
I don't mind merging, it's part of development. But I like to initiate it
when I'm ready for it, and I like to batch things. Pulling patches from the
mailing list does this somewhat (although it's a lot of work), certainly a
lot more than having a shared CVS pushing random unrelated changes at me at
unpredictable times. So there's the pull vs push aspect. (You may remember
the big hype about "push internet" in the late 90's, and how spectacular a
flop that was. Even rss is pull.)
There's also the whole bus issue. I've always done a lot of work offline.
It's when I'm not interrupted or distracted. Right now, I can't do
_anything_ with svn unless I'm connected to the internet. (I made the
downloads/patches directory to work around this a bit. It's been an
annoyance for a while.)
I'm also looking forward to being able to keep multiple lines of work
separate, with local branching that means something. Right now I've got a
half-dozen stalled things (like the passwd rewrite, the sed NUL fix and
associated get_line_from_file stuff, bbsh, the old init rewrite...) because
by the time I'm halfway done, the tree they're in is stale. (Or else bits of
my working tree leak in before it's ready as I marshall other patches through
it.) When I go "svn update", svn is kind enough to drop >>>>> <<<<<
sections randomly into my tree which are a serious pain to clean up, and I
don't usually notice them until the next build failure. I want it to not do
that.
I tried looking at svk a few months ago, which layers some decentralization
workarounds on top of svn. You know how I found out that the udhcp directory
had been deleted and replaced with a symlink? When svk barfed on that so
badly it broke my local repository. Once again, random changes to the
central repository could reach out and interfere with whatever I was doing.
Yeah, I know, a coincidence, but it left a bad taste in my mouth.
I hate fighting tools. Fighting with a bug, sure, but fighting with
development tools sets my teeth on edge. I have to put up with gcc and make,
but there are better alternatives for some other things, and I'm looking into
them.
Anyway, that's why I'm poking at Mercurial.
Rob
--
Never bet against the cheap plastic solution.
More information about the busybox
mailing list