[BUG]DVS breaks FileContentsBrowser diffing

Avi Bryant avi at beta4.com
Fri Jun 27 08:03:52 UTC 2003


On Fri, 27 Jun 2003, Tim Rowledge wrote:

> Looks to me as if DVS needs a lineend rework somewhere.

<big sigh>

If I ever find the person responsible for the whole notion of incompatible
line ending conventions, I will present them with a very large invoice for
lost time...

The good news is that I spent a chunk of today doing line ending work on
Monticello.  After having quashed line ending bug after line ending bug
and having them keep on popping up, I'm pretty sure that we've driven a
stake through the whole issue and cut off its head for good.

For those that are interested, this is what Julian, Colin and I came up
with:

- All Monticello packages are loaded using CrLfFileStream, to ensure that
everything in the image is using CR
- When filing out a package over an already existing file, the new version
will use the same convention as that existing file
- If there is no pre-existing file, the fileout will use the same
conventions as the last file for that package that was filed in
- If the package has never been filed in, the fileout will use the native
line endings for the current OS

So, *if* you were using Monticello (and I've just updated SM with a new
snapshot) line-endings should finally Just Work.

Now, one could try to update DVS to use the same strategy.  There
are two problems with this:

1. One nice thing about DVS is it uses normal chunk format for its
fileouts.  This means you can file it in without using DVS.  This also
means that people *are going to* file in DVS packages without DVS, and
those packages *are going to* have line-endings other than CR.  That means
you will end up with LFs inside your source, which I assume was at the
root of Tim's problem.

Ultimately (and this is the bad news), the line ending issues in DVS are a
result of a fundamentally flawed goal - to be compatible both with CVS and
with Squeak chunk format.  It's flawed because part of the definition of
Squeak chunk format is that it uses CRs for line ending, and part of being
compatible with CVS is to use the appropiate line ending convention for
your host OS.  So you *can't* really have one format that does both, and
you end up not being fully compatible with either.  Better to define an
entire new format, as Monticello does, which brings me to:

2. At this point Monticello does everything DVS does and much more, and it
doesn't have line-ending problems (fingers crossed).  There's no excuse
not to use it, except possibly for a lack of documentation (and if you
can't figure it out, I will write detailed emails until you can).  So use
it, please.  The only thing I currently use DVS for is for Monticello
itself, and when I find another couple of hours I'll come up with a
bootstrap strategy so that I can get rid of that dependency as well...

Ok, that was an excessively long and emphatic email, but it's been a
frustrating few days in line-ending land.

Cheers,
Avi



More information about the Squeak-dev mailing list