RE: CVS corrupts binary files ...

2004-07-06 Thread Paul Sander
--- Forwarded mail from Greg Woods:

[ On Friday, July 2, 2004 at 12:49:58 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 --- Forwarded mail from [EMAIL PROTECTED]
 
 [ On Wednesday, June 30, 2004 at 22:59:27 (-0700), Paul Sander wrote: ]
  Subject: RE: CVS corrupts binary files ...
 
  (A) they're not sources -- they're intermediate product files.
  
  They're not intermediate product files unless they can be reproduced
  from some other source using an established process.
 
 Yes, they are intermediate product files.  Just because their ultimate
 source code is managed by someone else doesn't change the fact that they
 are not sources for the local project -- indeed it only confirms it.
 
 In other words, you're trying to integrate your vendor's CM process into
 some global, all-encompassing process that also happens to include yours?

Oh, come on now Paul!  How much detail do I have to give you?  I thought
you had enough experience with SCM by now that you'd understand how to
manage third party components with the appropriate tools!

I know how absurd it sounded, but I had to ask to make sure I understood
what you were saying.  And you really aren't making a lot of sense.

NO, I am not even suggesting that the vendor's CM process be accounted
for in any way.

Whew!  That's good!

I'm saying quite simply that intermediate product files are what they
are regardless of who produces them.

Intermediate product files are things like .o files, which are neither
sources nor shippables, but are an essential part of the overall build
process.  Because they can be rebuilt at will from existing sources using
a repeatable procedure, their retention is not required and sometimes is
not even desirable.

This appears to be the basis of our disagreement:  For me, intermediate
product files, as I've defined them above, can be deleted and rebuilt at
will.  Products that come from outside sources do not fit this description.

Because products from outside sources, for all intents and purposes,
cannot be re-created without human intervention, they require an archival
method that can re-create any coherent sets files supplied by the vendor
at any time.  That's precisely what version control is good for, and that's
why I check in everything I receive from any vendor.  By using CVS as my
only version control tool, I don't need variants of all of my other tools
that interface to version control.

Additionally, my build processes manage storage and baseline references
automatically, and they provide a consistent interface at the top level
to facilitate automated scheduling.  That means that whatever build and
installation procedures that exist must have a consistent interface.  In
my case, I have a limited set of hooks to allow for per-build refinements
(e.g. a Gnu compatible makefile in the top of the source tree that
implements an all target) and also publishes its outputs (e.g. search
paths for use by other builds, packing lists and shippables, etc.).

In this environment, it is *possible* to hand-craft baseline builds for
third-party products (as you suggest), but it is **far easier** (in the
long run) to treat them like source code because all of the power of the
existing environment is brought to bear to manage them.

If you don't know how to track the components of your software using
your own processes, i.e. over and above and outside of CVS, then I've
got to wonder if you have any SCM outside of CVS.  Remember CVS is not a
complete configuration management system.  I know you know that but I
seem to have to keep pointing it out to you almost continuously.

My processes track all of the inputs to my processes.  They also track
artifacts that are automatically managed (e.g. baseline references), as
well as artifacts that can't be controlled (e.g. the operating system and
patch level on the build machine).  It turns out that, although such
traceability records are outputs of my build procedures, they represent
sources that cannot be automatically reproduced exactly, so they are
also checked in and become input to the tools that reproduce old builds.

 Well, in my world, there are boxes around my process and my vendors.

You've got to learn to think outside your box!

(and especially to think outside of the box CVS works within)

The power convenience given to me by the contents of the box makes
compelling reason to stay inside it.  Although the interfaces are fixed,
they are pretty generic.  Thin abstraction layers provide sufficient
flexibility to accomodate the requirements of vendor-supplied files while
still meeting the repeatability and reproducibility (build and configure
it the same way, over and over again) requirements.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-07-05 Thread Greg A. Woods
[ On Friday, July 2, 2004 at 12:49:58 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 --- Forwarded mail from [EMAIL PROTECTED]
 
 [ On Wednesday, June 30, 2004 at 22:59:27 (-0700), Paul Sander wrote: ]
  Subject: RE: CVS corrupts binary files ...
 
  (A) they're not sources -- they're intermediate product files.
  
  They're not intermediate product files unless they can be reproduced
  from some other source using an established process.
 
 Yes, they are intermediate product files.  Just because their ultimate
 source code is managed by someone else doesn't change the fact that they
 are not sources for the local project -- indeed it only confirms it.
 
 In other words, you're trying to integrate your vendor's CM process into
 some global, all-encompassing process that also happens to include yours?

Oh, come on now Paul!  How much detail do I have to give you?  I thought
you had enough experience with SCM by now that you'd understand how to
manage third party components with the appropriate tools!

You're sounding more like a politician every time!  Jumping off in yet
another wrong direction, perhaps just for the sake of debate, every time
I try to put you on the right track again.

NO, I am not even suggesting that the vendor's CM process be accounted
for in any way.

I'm saying quite simply that intermediate product files are what they
are regardless of who produces them.

If you don't know how to track the components of your software using
your own processes, i.e. over and above and outside of CVS, then I've
got to wonder if you have any SCM outside of CVS.  Remember CVS is not a
complete configuration management system.  I know you know that but I
seem to have to keep pointing it out to you almost continuously.

 Well, in my world, there are boxes around my process and my vendors.

You've got to learn to think outside your box!

(and especially to think outside of the box CVS works within)

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-07-02 Thread Greg A. Woods
[ On Thursday, July 1, 2004 at 14:33:11 (-0700), Paul Sander wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

 What are you talking about?  I can think of only two ways that CVS
 uses the deltas:

Well, as usual you got off on the wrong track right from the start
again.

What part of RCS Compatible have you misunderstood this time?

 CVS has a notoriously poor diff and merge capability.

Well, that seems to depend entirely on your point of view and your
perpensity to try to use the wrong (or at least the least suitable) tool
for the job.

I and no doubt millions of other people have been incredibly satisfied
with the extremely wide applicability of the unix diff and merge
algorithms.  It's almost a miracle that they work so well for such a
variety of different kinds of text files -- or maybe it's just an
indication of how well designed they are for dealing with the vast
majority of forms of representation of human-readable information.

Of course you don't have to like them, but you do have to accept that
they are integral to RCS and thus integral to CVS.  Go away and go play
with xdelta and friends if you want.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-07-02 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Wednesday, June 30, 2004 at 22:59:27 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 (A) they're not sources -- they're intermediate product files.
 
 They're not intermediate product files unless they can be reproduced
 from some other source using an established process.

Yes, they are intermediate product files.  Just because their ultimate
source code is managed by someone else doesn't change the fact that they
are not sources for the local project -- indeed it only confirms it.

In other words, you're trying to integrate your vendor's CM process into
some global, all-encompassing process that also happens to include yours?

Well, in my world, there are boxes around my process and my vendors.
The boxes have well-defined inputs and outputs, and anything in my box
is subject to my process.  And artifacts that can't be derived from other
artifacts automatically are treated like sources.  And rightly so.

The established process is to repeat whatever process you did to get a
copy of those intermediate product files in the first place!

What's so bloody hard to understand about this?  It's extremely basic!!!

So, what you're proposing is to use the vendor's distribution media and
an offline archival system for version control, and a written installation
procedure to put it somewhere (hoping that whatever local configuration
options get used once are repeated next time), and assuming that the
installation procedure provides a hook so that you can manage your
installations as baselines?  And you re-install by hand and patch for
every bug fix?

Yeah.  Right.  Get real.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-07-01 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Monday, June 28, 2004 at 18:31:58 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 On three separate occasions, Greg actually *recommends* intalling and
 treating such code drops as uncontrolled sources!

Paul, please stop mirepresenting what I have said.

(A) they're not sources -- they're intermediate product files.

They're not intermediate product files unless they can be reproduced
from some other source using an established process.  The code drops
we're discussing come from outside and are the definitive *sources*
of the data that they contain, and can't change (or be recovered if
lost) without human intervention.  By definition, they are source files.

(B) installing third-party intermediate files on the build systems
doesn't mean they are uncontrolled -- only in _your_ mind could
that be true.

They are, if there's no control over them.  Simply installing them
is not controlling them.  If you can't control them, then you must
remember all aspects that you can measure.  If you don't then something
will break as a result an uncontrolled change being introduced, and
the problem will be potentially very hard to detect, correct, and prevent
in the future.

  Dropping stuff in
 a directory and pointing makefiles at it is just plain bad CM.

Indeed it would be, if that was all one did.

In all of the articles posted so far on this thread, you have suggested
nothing more.  What do you have in mind, in addition to what you've said?

Let me repeat again since you obviously don't grasp the full and deep
meaning of this statement:  CVS is _NOT_ a _complete_ software
configuration management system.

READ MY KEYS:  I agree that CVS is not a complete software configuration
system.  In the very message that you snipped above, I listed a number of
things that must be done with files like this, starting with a
tuning/build/installation/deployment method that itself undergoes
good CM.  CVS is used only for the version control part, archiving
the incoming sources and providing a convenient extraction method that
happens to be the same one that tracks all other sources in the product.

Obviosly anyone interested in good SCM will have external procedures to
account for these third-party files, just as they should have procedures
for dealing with _all_ attributes of their build environment.

Cool.  We agree on something.  It's good when you say what you mean.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-07-01 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Monday, June 28, 2004 at 19:02:19 (-0700), Paul Sander wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

 I have never, ever advocated changing the format of an RCS file in a
 way that would break the ci, co, rcs, or rlog programs.  And although
 I strongly advocate the replacement of user-exposed diff and merge
 tools, I have never, ever advocated the replacement of the diff tool
 that computes the deltas stored in an RCS file.

Indeed -- instead you would rather use different algorithms for storing
deltas and for using them.

That would be just plain stupid, if indeed not eventually dangerous to
the integrity of a repository.

What are you talking about?  I can think of only two ways that CVS
uses the deltas:  Reconstructing complete versions, and annotating
version history.  For the purposes of this thread, which started out
with diffing and merging files, the tools require reconstructed versions.

Of course, the algorithms that produce the deltas and reconstruct the
original data must agree.  But that's all below the RCS API and is
completely invisible to the user.

Once the user has two or three complete files, he can apply any diff or
merge algorithm he wants to those files.  Recall the following sequence
of operations:

co -pancestor file,v  a
co -pcontributor file,v  c
diff3 -E file a c

Once again, the algorithms and data formats that maintain the integrity
of the RCS files is hidden away and invisible to the user by way of the
co and ci programs.  The user can replace the invocation of diff3 with any
tool that he chooses to perform the content merge.  Once done, the user
uses ci to produce a new delta in the RCS files, using the very algorithm
that produces the correct data for subsequent invocations of co.

There's absolutely no danger to the integrity of the RCS file, unless
someone mucks with the innards of co or ci.  And nobody is even hinting
that making such changes is desirable, at least with respect to the
deltatext phrases in the RCS files.  (There have been several
recommendations to exploit the areas of the rcsfile format that explicitly
permit extensions, but extensions of this nature have absolutely no effect
on RCS' ability to store and reconstruct versions, which I have demonstrated
in a separate message.)

The tools we now have for calculating and handling deltas are all
designed to work _together_, not in isolation of each other, and that
uniformity is as valuable to CVS as it is to RCS alone, if not more so.

What tools, specifically (and I mean, you need to name them and include
pointers to them so that the rest of us can look), are you talking about?
The RCS programs and CVS in its current implementation are the obvious
ones, and my comments withstand scrutiny on those.  What else are you
referring to?

How about you go off and spend the next, say, two years or so
intensively using such a scheme as you propose on a massively huge
variety of projects.  That should give you about 10% of the experience
the rest of the world has with using diff and diff3 and rcsmerge
uniformly for both purposes.

Then if you still think it's wise to use disparate techniques for
storing deltas and for using deltas then you can show your results and
raise your proposal here again.

In the mean time please keep in mind that there are not just a plethora
of tools for using diff-style deltas, but there's also an enormous
amount of human experience with them too.

I look forward to seeing your list of references, so that we can debate
the relative value of interpreting ed-like scripts for a least-common
denominator level of functionality, versus parsing the entire content of
a reconstructed file and applying domain-specific algorithms that
understand the type of data stored there.

You (and a few others) seem to want to throw the baby out with the bath
water, and all just so that a few hair-brained and lame mis-uses of CVS
will work better.  In the mean time if you (and others) had learned to
use the best tool for the job in the first place then you'd never have
had to dream up such a half-baked idea.

CVS has a notoriously poor diff and merge capability.  Integrating the
user-exposed features with better tools is a very good example of using
the best tool for the job.  And it's not a half-baked idea; the whole
idea of plug-ins is well established in the industry, and its feasibility
in CVS is proven.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-07-01 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Monday, June 28, 2004 at 14:58:03 (-0700), Mark D. Baushke wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...) 

 Yes, but diff is not diff3. diff is used for the
 delta format. diff3 is used by rcsmerge, not for
 fundamental version deltas.

I think you're confused -- the differencing algorithms used are
fudamentally intertwined (and fundamentally based on units of lines of
text).

This true, insofar as to maintain the integrity of the RCS files and
to reconstruct complete versions.

Pretending you can do merges using some other algorithm while still
trying to store your deltas in unix diff format is just leading everyone
down the garden path to a dark dank corner no-one really wants to be in.

What do we care what format the versions are stored in, as long as we
can recover the complete files and apply any tool we want to them?

Although I can imagine such a thing, I don't know of any merge tool
reads the ed-like scripts produced by the diff program and presents
a user interface to apply or omit specific deltas to an input file.
It's an interesting idea, and it might even be useful, but its
utility is limited.

On the other hand, reconstructing entire versions and applying
content-specific tools is far more useful.  For example, there is
research on hierarchical differencing algorithms that compare
tree-like structures like the ones produced by parsers of programming
languages.  I foresee that this will lead to a new wave of merge
tools that provide a much higher level of utility than line-based
tools like diff3.  This kind of work just isn't possible with line-based
deltas produced by the diff program.  (It's also possible that they
could lead to a new wave of archivers that provide RCS-like capability
but use the hierarchical diffs in the deltatext records, which will be
interesting.  But nobody's suggesting a possible replacement of the RCS
layer just yet.)

The uniform use of differencing algorithms and their corresponding merge
algorithms (which are of course just editing scripts), is what makes
it worthwhile to use something like RCS as the foundation for CVS in the
first place.

It's what makes it possible for systems like RCS to exploit the similarity
of sequential versions for efficient storage, to be sure.  But applying
a delta to reconstruct a version is very different from doing a content
merge of two or three fully reconstructed files.

I.e. it is not sufficient to just use the RCS delta format as a means of
archive compression -- that format is integral to the whole idea of
detecting, reporting, and merging, changes in any RCS-compatible tool.

Once again, no one is suggesting changing the way that RCS works.

 Are there really utilities out there that try to
 to read RCS formats directly and do not allow for
 rcsfile(5) syntax to be used? If so, could you
 name any of them?

Humans, for one.  :-)

(I know some folks can do manual merges of SCCS files, and though the
same techniques won't work quite so well on RCS files because of the
reverse delta thing, there are still a great many other valid reasons to
read and even repair RCS files by hand.)

There are a number of commercial software pacakges which are GNU RCS
compatible, apparently without using RCS source code, with the most
popular perhaps being CS-RCS (though I've not confirmed 100% that it
does not use RCS source code).  SourceCodeManager is apparently another,
and P4D yet another.

Perforce also uses RCS compatible files as its archive format, but I'm
not sure if its core RCS handling was derived from RCS source code or not.

I think I've just scratched the surface too, if any of the rumours I've
heard are close to true.

Well, if these tools are truly RCS compatible then they should be able
to ignore the newphrases we've been talking about.  And since there is
no proposition to change the format of the deltatext phrases, or any of
the other standard components of an RCS file, those tools should continue
to work.

BTW, I have also written a couple of tools that parse the RCS file syntax.
They conform to the rcsfile format and should tolerate extensions made as
newphrases as specified.

I have also seen commercial tools derived from RCS (specifically, the MKS
variety) that have made proprietary extensions and are no longer compatible
with the Gnu standard.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-30 Thread Greg A. Woods
[ On Monday, June 28, 2004 at 19:02:19 (-0700), Paul Sander wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

 I have never, ever advocated changing the format of an RCS file in a
 way that would break the ci, co, rcs, or rlog programs.  And although
 I strongly advocate the replacement of user-exposed diff and merge
 tools, I have never, ever advocated the replacement of the diff tool
 that computes the deltas stored in an RCS file.

Indeed -- instead you would rather use different algorithms for storing
deltas and for using them.

That would be just plain stupid, if indeed not eventually dangerous to
the integrity of a repository.

The tools we now have for calculating and handling deltas are all
designed to work _together_, not in isolation of each other, and that
uniformity is as valuable to CVS as it is to RCS alone, if not more so.

How about you go off and spend the next, say, two years or so
intensively using such a scheme as you propose on a massively huge
variety of projects.  That should give you about 10% of the experience
the rest of the world has with using diff and diff3 and rcsmerge
uniformly for both purposes.

Then if you still think it's wise to use disparate techniques for
storing deltas and for using deltas then you can show your results and
raise your proposal here again.

In the mean time please keep in mind that there are not just a plethora
of tools for using diff-style deltas, but there's also an enormous
amount of human experience with them too.

You (and a few others) seem to want to throw the baby out with the bath
water, and all just so that a few hair-brained and lame mis-uses of CVS
will work better.  In the mean time if you (and others) had learned to
use the best tool for the job in the first place then you'd never have
had to dream up such a half-baked idea.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-30 Thread Greg A. Woods
[ On Tuesday, June 29, 2004 at 02:18:26 (-0700), Paul Sander wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

 I.e. How do you propose to make it possible for the standard RCS tools
 alone to re-create _every_ revision from all files created by this
 hacked system?
 
 Simple:  The delta text would not change.  See above.

It would be extremely short-sighted, if not downright stupid, to not
keep the delta format compatible with that used by the new delta tools.

You seem to have no appreciation whatsoever for the depth and breath to
which this format (and its easily computed variants) is used and
understood.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-30 Thread Greg A. Woods
[ On Monday, June 28, 2004 at 14:58:03 (-0700), Mark D. Baushke wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...) 

 Yes, but diff is not diff3. diff is used for the
 delta format. diff3 is used by rcsmerge, not for
 fundamental version deltas.

I think you're confused -- the differencing algorithms used are
fudamentally intertwined (and fundamentally based on units of lines of
text).

Pretending you can do merges using some other algorithm while still
trying to store your deltas in unix diff format is just leading everyone
down the garden path to a dark dank corner no-one really wants to be in.

The uniform use of differencing algorithms and their corresponding merge
algorithms (which are of course just editing scripts), is what makes
it worthwhile to use something like RCS as the foundation for CVS in the
first place.

I.e. it is not sufficient to just use the RCS delta format as a means of
archive compression -- that format is integral to the whole idea of
detecting, reporting, and merging, changes in any RCS-compatible tool.


 Are there really utilities out there that try to
 to read RCS formats directly and do not allow for
 rcsfile(5) syntax to be used? If so, could you
 name any of them?

Humans, for one.  :-)

(I know some folks can do manual merges of SCCS files, and though the
same techniques won't work quite so well on RCS files because of the
reverse delta thing, there are still a great many other valid reasons to
read and even repair RCS files by hand.)

There are a number of commercial software pacakges which are GNU RCS
compatible, apparently without using RCS source code, with the most
popular perhaps being CS-RCS (though I've not confirmed 100% that it
does not use RCS source code).  SourceCodeManager is apparently another,
and P4D yet another.

Perforce also uses RCS compatible files as its archive format, but I'm
not sure if its core RCS handling was derived from RCS source code or not.

I think I've just scratched the surface too, if any of the rumours I've
heard are close to true.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-30 Thread Greg A. Woods
[ On Tuesday, June 29, 2004 at 19:34:25 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 When you speak about how great NASA is and mention the antiquity of some
 of their processes, remember that the paper checklists have since
 contributed to the failure of several missions (some of which missed
 entire planets) and the loss of 14 lives.

Have you not read the investigation reports on all those incidents?

The concept of using paper checklists as part of their process did not
contributed in any way to those failures.

Indeed their ability to investigate those incidents is in no small part
aided by the existance of those paper checklists.



 NetBSD is awesome!

Of course -- that's why I've come to use it almost exclusively.  ;-)

 But keep in mind that the reason they can do what they do is that they
 literally own the entire environment, from the OS and system libraries
 on up.

Well, Duh!

That's the whole point here!  If you want to control your software
development process from top to bottom then you must own the whole
environment -- from the build environment and tools and such through to
all directly included components of the system.

  Yes, they have to build cross environments, but after they've
 built the cross compiler twice the runtime environment of the build
 system really doesn't matter as long it can schedule CPU time and access
 files.  Most of us don't have that luxury.

You create the situations you yourself must live with.

NetBSD is only interesting in this respect because the whole project,
and indeed multiple working branches of it, can be checked out entirely
from one big CVS repository.  (keeping in mind that the manual rules for
developers dealing with that repository are not exactly trivial,
especially in the special-case situations I mentioned)

In fact in in all successful development environments for critical
software, and most for embedded software, that I've ever encountered
there's a similar level of ownership over all tools and components --
however it's extremely rare to find anyone using CVS as exclusively as
NetBSD is able to do (unless they are also using NetBSD :-), partly
because few groups are willing to live under the restrictions this
causes (it's far easier to use a manual checklist to ensure the right
versions of all the right tools and third-party components is installed
on a build system).

(So far it's been the unsuccessful, or struggling, development groups
I've encountered who have been the ones who have failied to take
ownership over all their software components.)

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-29 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Mark, I agree with your response to Greg's claims about RCS
compatibility, or the lack thereof.

In particular, I am not aware of any fundamental
problems rcs 5.7 will have if someone were to
introduce a new keyword which would name a program
other than diff3 to be used in rcsmerge
operations. At most, I would expect a warning
message via the warnignore() function which would
specify

co: file,v: warning: Unknown phrases like `diff3hint ...;' are present.

and even so, a 'co -q file,v' would not generate
such a message.

So, I believe that adding a

'diff3hint someprogram;'

line to the RCS file should not be a problem for
co to still be able to checkout each and every
version of the file.

Rather than use a hint to expose an implementation detail, I suggest
recording a data type instead.  Maybe even a MIME type.  Then provide
a suitable mechanism to map data types to tools that are appropriate
to the environment.

BTW, CVS no longer uses rcsmerge; it co's the necessary versions
and runs diff3 directly.  So in a CVS context, pushing this capability
down to RCS isn't really a requirement.  However, I recognize the
usefulness of doing so, and would not oppose such a feature.  On the
other hand, doing so will likely be a duplication of effort because
CVS has client/server concerns that RCS does not, and that may necessitate
a different implementation.

Given that this would appear to be the desire of
at least a few folks out there who might want to
make CVS do a better job at merging structured
ASCII files such as XML or HTML format. And
further, that you seem to have objections to this
approach. And while I have known you to bring up
points I have overlooked in the past...

Not just structured ASCII files as you describe, but any file
containing structured data for which a merge tool is available.

This time around I just do not see anything that
would preclude such an approach of using an
external diff3 hint 'replacement' program for
doing a 'cvs update -jtag1 -jtag2' operation.

I will stipulate that such a program will likely
need to live on the server and furthermore that it
would not be interactive. In the absense of
finding such a program, CVS would likely resort to
using diff3 as a fallback, so its arguments would
likely need to match those of the diff3 program
itself... at least to the extent that cvs currently
uses various arguments to diff3.

I don't believe that such a program MUST live on the server.
Merge tools, like editors, have a way of becoming religious
icons, in situations where users have a choice.  Under such
circumstances, it becomes important to have client side
mappings between data types and merge tools.

Additionally, I don't believe that merge tools necessarily
need to be fully automated.  After the relevant versions have
been downloaded to the client (and the repository locks have
been cleared), the merge tools can run interactively.
However, I believe that CVS current intersperses merges with
downloads, and that would need to change before interactive
merges can be supported.

Also, CVS currently relies on diff3-style mark-ups to warn the
user when merge conflicts remain present at commit time.  Though
strictly speaking such warnings are not necessary, they are
incredibly useful.  And they'll be lost unless merge conflicts
are recorded another way.  One way is to lists conflicts in a
file stored in the CVS directory.  At commit time, skip the
scan for diff3 mark-ups and instead read the conflict list and
compare mod times of the relevant files.  If they have changed,
assume the conflicts have been resolved.

Let me state the scope of the thought experiment:

Goal: Provide a means whereby a cvs administrator
may cause a program other than diff3 to be used
when doing merge operations as a part of a
three-way merge of files in a sandbox. This
program might be defined as a keyword used as the
value of a 'diff3hint' followed by an 'id' which
could be looked up in a table that cvs could keep
to determine which executable and any additional
arguments above the diff3 form arguments might be
required.

Again, I think that recording a data type is a more straightforward
(or at least more easily understood) implementation.

Assertion: The diff3 replacement must handle
all of the args that cvs normally passes to diff3.

Yes.

Assertion: The diff3 replacement must not be
interactive in nature for client/server repository
uses.

Well, okay for the first implementation.  :-)

Assertion: The diff3 replacement must be able to
run just given the three versions of the file
without any other state.

Yes, but it would be nice to be able to pass in the version
numbers for column headings or the like, if the tool permits.

Assertion: That cvs continue to write new RCS files
in adherence to the syntax defined in rcsfile(5), but
allowing the introduction of one or more new phrases
and associated id word values as allowed for by the
RCS format syntax.


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-29 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Monday, June 28, 2004 at 01:44:36 (-0700), Mark D. Baushke wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

 The RCS format is very extensible and in fact the
 CVSNT folks have extended it already and I have had
 no problems using CVSNT repositories in conjunction
 with either CVS or RCS.

very is an over-statement of the first order!  ;-)

Sure, it's an extensible format, but not in the way that's been
suggested.  You can't get rid of the _exclusive_ use of diff et al
without entirely losing compatabilty with RCS.

Nobody has suggested abandoning diff for computing RCS deltas.
All discussion relating to replacement of diff and merge tools
have revolved around the user interface.  That's completely
different.

 I do not see support for your assertion that
 compatibility is far more than just the
 adherence to the syntax defined in rcsfile(5).

Sadly rcsfile(5) only describes the meta-syntax, not the nutsbolts of
how RCS files work and how they're actually used by the RCS package.

 So, I believe that adding a
 
 'diff3hint someprogram;'
 
 line to the RCS file should not be a problem for
 co to still be able to checkout each and every
 version of the file.

diff3hint in the way you're hinting it might be used is insufficient.

RCS directly interprets the content of the delta text information,
e.g. the likes of:

   @d5 1
   a5 1
   some new line of text
   d256 1
   @

See, for example, lib/rcsedit.c from the RCS source distribution.

You are obviously missing something here.  We're talking about
adding a newphrase in the admin, delta, or deltatext productions.
Using the deltatext production and your diff output as an example:

1.1
log
@this is a log message
@
diff3hint use-this-tool;
text
@d5 1
a5 1
some new line of text
d256 1
@

This obviously extends the RCS file format in a way that does
not break compatibility with the existing RCS software.  Following
is a complete RCS file that contains not one but three extensions,
but they're done in a way that is supported by the RCS file format.
And none of the RCS programmatic interfaces break.

head1.4;
access;
symbols;
locks; strict;
comment @# @;
admin-ext @this is an admin extension.@;


1.4
date2004.06.29.09.08.54;author paul;state Exp;
branches;
next1.3;

1.3
date2004.06.29.09.05.20;author paul;state Exp;
branches;
next1.2;
delta-ext @this is a delta extension.@;

1.2
date2004.06.29.09.04.53;author paul;state Exp;
branches;
next1.1;

1.1
date2004.06.29.09.04.24;author paul;state Exp;
branches;
next;


desc
@Test file.
@


1.4
log
@Added the beep!
@
text
@This is a test.  This is only a test.
If this had been an actual emergency,
it would have been too late.
BEP!
@


1.3
log
@Done!
@
deltatext-ext @this is a deltatext extension.@;
text
@d4 1
@


1.2
log
@First change.  Needs more work.
@
text
@d3 1
@


1.1
log
@Initial revision
@
text
@d2 1
@

Any modification of the diff algorithm would almost certainly require
changes to the syntax of this delta text.

Actually, this isn't true.  The diff program itself implements multiple
algorithms.  But that's neither here nor there because nobody is
recommending that the format of the differences be changed.

As far as I can tell the extensibility of the RCS,v syntax does not go
so far as to provide for callouts to add-on programs and I'm arguing
that it's _far_ too late to try to modify this widely used standard file
format now.

It's never too late to update a standard.  In any case, RCS file
extensibility has been in the standard for a very long time now.

So, how _exactly_ do you propose to convince the standard co program
(or the equivalent in any other RCS-compatible tool suite, including the
current CVS implementations) to actually make use of the new delta
text syntax that such a hack would create?

I.e. How do you propose to make it possible for the standard RCS tools
alone to re-create _every_ revision from all files created by this
hacked system?

Simple:  The delta text would not change.  See above.

It's simply not possible.  Like I said, only the bare surface of RCS
compatability is scratched by the meta-syntax described in rcsfile(5).

Absolutely untrue, as demonstrated by the RCS file above.

The RCS file format is intricately intertwined with the unix diff
algorithm, which is itself tightly dependent on the normal use of
lines of text to represent elements of a the source files being managed

This much is true.

(at least when it comes to automated merging for concurrent editing).

But that is not.

The diff and merge algorithms that the user applies are distinct from
the diff algorithm that computes the deltas.  They can be changed, as
I've demonstrated before on several occasions.  It so happens that
the rcsdiff and rcsmerge programs, and CVS itself, use the same
programs forr both purposes, but there is no technical

Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-29 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Paul Sander [EMAIL PROTECTED] writes:

 --- Forwarded mail from [EMAIL PROTECTED]
 
 Rather than use a hint to expose an
 implementation detail, I suggest recording a
 data type instead. Maybe even a MIME type. Then
 provide a suitable mechanism to map data types
 to tools that are appropriate to the
 environment.

I have no fundamental objection to saving the MIME
type. I suggest that it may need to be inside of a
string to pass the syntax of rcsfile(5). I would
actually suggest that it might be useful to just
borrow both of the MIME media-type and charset
concepts. That might allow for a 

  media-type text/plain;
  charset ks_c_5601-1987;

on a given file... the defaults should probably
be text/plain and iso-8859-1 or utf-8

 BTW, CVS no longer uses rcsmerge; it co's the
 necessary versions and runs diff3 directly. So
 in a CVS context, pushing this capability down
 to RCS isn't really a requirement. However, I
 recognize the usefulness of doing so, and would
 not oppose such a feature. On the other hand,
 doing so will likely be a duplication of effort
 because CVS has client/server concerns that RCS
 does not, and that may necessitate a different
 implementation.

Yes, I am aware that CVS no longer uses rcsmerge.
However, Greg was suggesting that RCS
compatibility would be broken by an extension such
as the one outlined in the thought experiment I
provided, so I felt it reasonable to mention how
RCS itself used diff3 in the past.

 Given that this would appear to be the desire of
 at least a few folks out there who might want to
 make CVS do a better job at merging structured
 ASCII files such as XML or HTML format. And
 further, that you seem to have objections to this
 approach. And while I have known you to bring up
 points I have overlooked in the past...
 
 Not just structured ASCII files as you describe,
 but any file containing structured data for
 which a merge tool is available.

Ahh, but I am not really trying to suggest that
binary files are suitable in the general case
for CVS control. That is a separate argument.

That said, I suppose that a merge utility that
understands how to merge a file containing lines
in a non-ISO-LATIN character set might also fall
into the category of a diff3 replacement and that
such files might be considered 'binary' by some
programs.

 This time around I just do not see anything that
 would preclude such an approach of using an
 external diff3 hint 'replacement' program for
 doing a 'cvs update -jtag1 -jtag2' operation.
 
 I will stipulate that such a program will likely
 need to live on the server and furthermore that it
 would not be interactive. In the absense of
 finding such a program, CVS would likely resort to
 using diff3 as a fallback, so its arguments would
 likely need to match those of the diff3 program
 itself... at least to the extent that cvs currently
 uses various arguments to diff3.
 
 I don't believe that such a program MUST live on
 the server.

The changes needed to allow the client-side to do
a merge are very large. I am not willing to
stipulate an implementation that would allow CVS
to deal with an interactive merge operation for a
random 'cvs update' command. The repository would
have a lock open for too long in that case.

 Merge tools, like editors, have a way of
 becoming religious icons, in situations where
 users have a choice. Under such circumstances,
 it becomes important to have client side
 mappings between data types and merge tools.

Your arguments almost help to make a case in
Greg's favor against allowing a diff3 replacement.

The kind of flexibility you desire is not
something that I think makes sense to bolt into
the 'diff3' slot.

What you propose would potentially best be handled
with an entirely new kind of update paradigm.
Possibly the use of a CVS/Base/file file and a
'patch' that would bring CVS/Base/file up to the
latest version would be 'better' in this case...

 Additionally, I don't believe that merge tools
 necessarily need to be fully automated.

Here we do not agree. Without such automation,
lock contention on directories could get very
intense.

 After the relevant versions have been downloaded
 to the client (and the repository locks have
 been cleared), the merge tools can run
 interactively. However, I believe that CVS
 current intersperses merges with downloads, and
 that would need to change before interactive
 merges can be supported.

The current CVS operations all occur on the server
side prior to downloading patches to the client.

What you are suggesting is a fairly major overhaul
to the cvs client/server protocol and as such
there is probably a 'better' way to deal with this
than a 'simple' alternative table of diff3-style
programs to do alternative merger algorithms.

 Also, CVS currently relies on diff3-style
 mark-ups to warn the user when merge conflicts
 remain present at commit time.

Yes, I should have stated that a failed merger
will 

Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-29 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Paul Sander [EMAIL PROTECTED] writes:

 --- Forwarded mail from [EMAIL PROTECTED]
=20
 Rather than use a hint to expose an
 implementation detail, I suggest recording a
 data type instead. Maybe even a MIME type. Then
 provide a suitable mechanism to map data types
 to tools that are appropriate to the
 environment.

I have no fundamental objection to saving the MIME
type. I suggest that it may need to be inside of a
string to pass the syntax of rcsfile(5). I would
actually suggest that it might be useful to just
borrow both of the MIME media-type and charset
concepts. That might allow for a=20

  media-type text/plain;
  charset ks_c_5601-1987;

on a given file... the defaults should probably
be text/plain and iso-8859-1 or utf-8

Do you propose that the media-type be valid on its own, for data
types where charsets have no meaning?  Or put another way, is
the charset solely to provide additional processing hints to supplement
the media-type, or is the charset also required?

 Given that this would appear to be the desire of
 at least a few folks out there who might want to
 make CVS do a better job at merging structured
 ASCII files such as XML or HTML format. And
 further, that you seem to have objections to this
 approach. And while I have known you to bring up
 points I have overlooked in the past...
=20
 Not just structured ASCII files as you describe,
 but any file containing structured data for
 which a merge tool is available.

Ahh, but I am not really trying to suggest that
binary files are suitable in the general case
for CVS control. That is a separate argument.

Fair enough, but the practice is more common than anyone wants to
admit.  The issue must be faced at some point.

That said, I suppose that a merge utility that
understands how to merge a file containing lines
in a non-ISO-LATIN character set might also fall
into the category of a diff3 replacement and that
such files might be considered 'binary' by some
programs.

Indeed.

 This time around I just do not see anything that
 would preclude such an approach of using an
 external diff3 hint 'replacement' program for
 doing a 'cvs update -jtag1 -jtag2' operation.
=20
 I will stipulate that such a program will likely
 need to live on the server and furthermore that it
 would not be interactive. In the absense of
 finding such a program, CVS would likely resort to
 using diff3 as a fallback, so its arguments would
 likely need to match those of the diff3 program
 itself... at least to the extent that cvs currently
 uses various arguments to diff3.
=20
 I don't believe that such a program MUST live on
 the server.

The changes needed to allow the client-side to do
a merge are very large. I am not willing to
stipulate an implementation that would allow CVS
to deal with an interactive merge operation for a
random 'cvs update' command. The repository would
have a lock open for too long in that case.

Yes, to avoid long-lived locks, the necessary files must be
copied to the client before the merge begins.  This would
involve a significant change to the client, but I'm not
convinced that it would be a significant change to the server.
The server already has the ability to send whole revisions
to the client, and it need not be involved with the merge
once it starts.

 Merge tools, like editors, have a way of
 becoming religious icons, in situations where
 users have a choice. Under such circumstances,
 it becomes important to have client side
 mappings between data types and merge tools.

Your arguments almost help to make a case in
Greg's favor against allowing a diff3 replacement.

Horrors!  I sure hope not!  :-)

The kind of flexibility you desire is not
something that I think makes sense to bolt into
the 'diff3' slot.

Then bolt in a wrapper that reads the user's environment
and invokes a suitable merge tool based on preferences
that are found there.  And provide a default, like diff3,
if such information is missing.

What you propose would potentially best be handled
with an entirely new kind of update paradigm.
Possibly the use of a CVS/Base/file file and a
'patch' that would bring CVS/Base/file up to the
latest version would be 'better' in this case...

Whatever's most efficient to get the other contributor
and common ancestor to the client.  Clean-up needs to
be considered as well.

 Additionally, I don't believe that merge tools
 necessarily need to be fully automated.

Here we do not agree. Without such automation,
lock contention on directories could get very
intense.

Again, running the merge after relevant data have been
copied out and freeing the locks would remove this
issue.

Actually, the ancestor and contributor are checked-in
versions, and they're known in advance either by version
number or branch/timestamp.  Correct me if I'm wrong here.
If this really is true, then directory locks aren't even
needed in the repository.

This specific issue has been discussed in this forum
once before, 

RE: CVS corrupts binary files ...

2004-06-29 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Monday, June 28, 2004 at 11:00:23 (-0400), Jim.Hyslop wrote: ]
 Subject: RE: CVS corrupts binary files ...

 Any manual procedure is prone to error. I prefer to automate things as much
 as possible, to minimize the possibility of human error. Any time I see a
 manual process, I wonder how it could be automated.

While I will agree in part, I'll also point out that even NASA sill uses
paper checklists.  :-)

I know people who work for NASA, and I know people who have worked for
NASA in the past.  They have a saying at NASA:  It was good enough to
get us to the moon, so it's good enough for this.  Twenty years ago,
they really meant it.

When you speak about how great NASA is and mention the antiquity of some
of their processes, remember that the paper checklists have since
contributed to the failure of several missions (some of which missed
entire planets) and the loss of 14 lives.

Also remember that a modern wristwatch carries more computing power than
the spacecraft that orbited and landed on the moon, and a modern cell
phone has more computing power than the whole of NASA had in those days.
In a time when mission critical software was only hundreds or a few
thousands of bytes in size, it could be managed with paper checklists.
Today that is no longer the case, at least not unless you're willing
to tolerate a much higher level of risk.

So NASA is learning that what worked well in the past may not necessarily
work well in the future, maybe not even today.  Reliability is the order
of the day, and it turns out that reliability of a given procedure varies
inversely with the number of fingers poking it.  And today that saying is
spoken in jest.

Perhaps it would be instructive for those grappling with the
complexities of build systems, and version control integration, and
other components of a complete software configuration management system
to examine the likes of NetBSD's build system.

NetBSD is awesome!

But keep in mind that the reason they can do what they do is that they
literally own the entire environment, from the OS and system libraries
on up.  Yes, they have to build cross environments, but after they've
built the cross compiler twice the runtime environment of the build
system really doesn't matter as long it can schedule CPU time and access
files.  Most of us don't have that luxury.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-28 Thread Jim.Hyslop
Greg A. Woods wrote:
While I agree with most of what you wrote, I'd like to examine this one a
little more:

 Also what you and many other folks seem to forget as well is 
 that manual procedures and processes can be far easier and 
 more effective than canned software tools for implementing 
 some parts of a complete SCM system.

Any manual procedure is prone to error. I prefer to automate things as much
as possible, to minimize the possibility of human error. Any time I see a
manual process, I wonder how it could be automated.

I'm *not* saying that one tool, or even a variety of canned tools, will do
the job - the automation could be as simple as a batch file or script that
issues the appropriate commands in the correct sequence (with appropriate
error checking).

-- 
Jim Hyslop
Senior Software Designer
Leitch Technology International Inc. (http://www.leitch.com)
Columnist, C/C++ Users Journal (http://www.cuj.com/experts)



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-28 Thread Greg A. Woods
[ On Monday, June 28, 2004 at 01:44:36 (-0700), Mark D. Baushke wrote: ]
 Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

 The RCS format is very extensible and in fact the
 CVSNT folks have extended it already and I have had
 no problems using CVSNT repositories in conjunction
 with either CVS or RCS.

very is an over-statement of the first order!  ;-)

Sure, it's an extensible format, but not in the way that's been
suggested.  You can't get rid of the _exclusive_ use of diff et al
without entirely losing compatabilty with RCS.

 I do not see support for your assertion that
 compatibility is far more than just the
 adherence to the syntax defined in rcsfile(5).

Sadly rcsfile(5) only describes the meta-syntax, not the nutsbolts of
how RCS files work and how they're actually used by the RCS package.

 So, I believe that adding a
 
 'diff3hint someprogram;'
 
 line to the RCS file should not be a problem for
 co to still be able to checkout each and every
 version of the file.

diff3hint in the way you're hinting it might be used is insufficient.

RCS directly interprets the content of the delta text information,
e.g. the likes of:

@d5 1
a5 1
some new line of text
d256 1
@

See, for example, lib/rcsedit.c from the RCS source distribution.

Any modification of the diff algorithm would almost certainly require
changes to the syntax of this delta text.

As far as I can tell the extensibility of the RCS,v syntax does not go
so far as to provide for callouts to add-on programs and I'm arguing
that it's _far_ too late to try to modify this widely used standard file
format now.

So, how _exactly_ do you propose to convince the standard co program
(or the equivalent in any other RCS-compatible tool suite, including the
current CVS implementations) to actually make use of the new delta
text syntax that such a hack would create?

I.e. How do you propose to make it possible for the standard RCS tools
alone to re-create _every_ revision from all files created by this
hacked system?

It's simply not possible.  Like I said, only the bare surface of RCS
compatability is scratched by the meta-syntax described in rcsfile(5).

The RCS file format is intricately intertwined with the unix diff
algorithm, which is itself tightly dependent on the normal use of
lines of text to represent elements of a the source files being managed
(at least when it comes to automated merging for concurrent editing).

Meanwhile there are other change delta file formats and other version
tracking tools that use those other formats, and often there are also
tools that will convert RCS/CVS repositories into those other formats.
I.e. there's no _real_ fundamental need to hack on RCS,v syntax.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-28 Thread Greg A. Woods
[ On Monday, June 28, 2004 at 11:00:23 (-0400), Jim.Hyslop wrote: ]
 Subject: RE: CVS corrupts binary files ...

 Any manual procedure is prone to error. I prefer to automate things as much
 as possible, to minimize the possibility of human error. Any time I see a
 manual process, I wonder how it could be automated.

While I will agree in part, I'll also point out that even NASA sill uses
paper checklists.  :-)

Perhaps it would be instructive for those grappling with the
complexities of build systems, and version control integration, and
other components of a complete software configuration management system
to examine the likes of NetBSD's build system.

For the last year or so NetBSD can be built from source to CD-ROM on a
variety of non-NetBSD systems (as well as on NetBSD itself too of
course) with a single command that first constructs all the necessary
tools within the host environment and then uses them to compile the
NetBSD sources.  The host environment only needs a decent
POSIX-compatible C compilation and execution environment and a few
special tools such as mkisofs.

If I'm not mistaken you can even build NetBSD on a Microsoft-NT host
(after installing Cygwin), and except for a couple of problems with GCC
cross-compilation, you can target any of the 16 (and 1/2 :-) unique CPU
architectures NetBSD runs on, for any of the 52 different kinds of
machines which are supported.

For example I always build my own NetBSD/sparc installation media on my
much faster i386 development systems (which run NetBSD/i386).

The result is, so far as I know, byte-for-byte and bit-for-bit identical
no matter which host platform it was constructed on.

The complete NetBSD build system source is integrated directly into
the whole source tree (and it's all just shell scripts and makefiles,
with all the build tools being host-compiled copies of the NetBSD
development system itself).

Now as for NetBSD and CVS, well NetBSD does use CVS exclusively not only
as their official change tracking tool and as part of their release
management system, but also as a _public_ source distribution mechanism.
As a result there are indeed a very few more-or-less static binary files
in the repository.  However they have been uuencoded into ASCII text
format, and they are never changed by NetBSD developers.  I.e. external,
manually implemented, rules govern how these files are managed.  In a
less public project these files would better be treated in the same way
as other host tools (e.g. mkisofs) -- they would be separately managed
and installed on the build system(s), just as I've described should be
done with such files.  Independent external management of these doesn't
work well for NetBSD because of the need to make these files available
in the build environment without having network access at the time of
the build.

(BTW, NetBSD-2.0, now in beta-testing, will also cross-compile all of
the X11 system for the target platform too.)

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-28 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Greg A. Woods [EMAIL PROTECTED] writes:

 [ On Monday, June 28, 2004 at 01:44:36 (-0700), Mark D. Baushke wrote: ]
  Subject: Re: Smoke, FUD (was Re: CVS corrupts binary files ...)
 
  The RCS format is very extensible and in fact the
  CVSNT folks have extended it already and I have had
  no problems using CVSNT repositories in conjunction
  with either CVS or RCS.
 
 very is an over-statement of the first order!  ;-)

Agreed. :-)

 Sure, it's an extensible format, but not in the
 way that's been suggested. You can't get rid of
 the _exclusive_ use of diff et al without
 entirely losing compatabilty with RCS.

Yes, but diff is not diff3. diff is used for the
delta format. diff3 is used by rcsmerge, not for
fundamental version deltas.

  I do not see support for your assertion that
  compatibility is far more than just the
  adherence to the syntax defined in rcsfile(5).
 
 Sadly rcsfile(5) only describes the meta-syntax,
 not the nutsbolts of how RCS files work and how
 they're actually used by the RCS package.

True, but examiniation of the rcs sources (or cvs
sources) can help you a lot.

  So, I believe that adding a
  
  'diff3hint someprogram;'
  
  line to the RCS file should not be a problem
  for co to still be able to checkout each and
  every version of the file.
 
 diff3hint in the way you're hinting it might
 be used is insufficient.

Why?

 RCS directly interprets the content of the delta
 text information, e.g. the likes of:
 
   @d5 1
   a5 1
   some new line of text
   d256 1
   @
 
 See, for example, lib/rcsedit.c from the RCS
 source distribution.

Yes, and that is the concern of 'diff' NOT 'diff3'.

My assumptions explicitly did NOT address any
requirements other than that a 'diff3' replacement
be used. Where did your assertion that this requires
'diff' to be changed arise?

 Any modification of the diff algorithm would
 almost certainly require changes to the syntax
 of this delta text.

I did not suggest modification of the diff format.
I suggested modification of the diff3 program to
be used.

 As far as I can tell the extensibility of the
 RCS,v syntax does not go so far as to provide
 for callouts to add-on programs and I'm arguing
 that it's _far_ too late to try to modify this
 widely used standard file format now.

With existing RCS, you may compile it to use
DIFF3_BIN as any path you wish. There is nothing
to guarentee that the diff3 does what the GNU
diff3 program did...

 So, how _exactly_ do you propose to convince the
 standard co program (or the equivalent in any
 other RCS-compatible tool suite, including the
 current CVS implementations) to actually make
 use of the new delta text syntax that such a
 hack would create?

I propose that co use diff just as it has
always done.

I am not proposing any change to the delta
structure at all. 

The thought experiment is proposing a change in
the function called to do three way diff and merge
operations.

 I.e. How do you propose to make it possible for
 the standard RCS tools alone to re-create
 _every_ revision from all files created by this
 hacked system?

What I suggested does not require this.

 It's simply not possible.

You say this, but are assuming facts that were not
supported. Why does a change to 'diff3' for merge
operations imply or require a change to 'diff' for
everything else?

 Like I said, only the bare surface of RCS
 compatability is scratched by the meta-syntax
 described in rcsfile(5).

Why or how would a change in diff3 impact delta
formats for RCS? The DIFF3 binary is used only in
rcs-5.7/src/merger.c and plays no direct role in
checkout or commit of RCS files.

 The RCS file format is intricately intertwined
 with the unix diff algorithm, 

Actually, I suspect this to be false. I believe
the RCS delta section format is intertwined with
the ed(1) command format.

 which is itself tightly dependent on the
 normal use of lines of text to represent
 elements of a the source files being managed (at
 least when it comes to automated merging for
 concurrent editing).

And all of that is not material to the current
thought experiment.

 Meanwhile there are other change delta file
 formats and other version tracking tools that
 use those other formats, and often there are
 also tools that will convert RCS/CVS
 repositories into those other formats. I.e.
 there's no _real_ fundamental need to hack on
 RCS,v syntax.

Hmmm... I may have missed something completely.
Most of the ones I have seen (the CVS to ClearCase
script for example) use the RCS commands to
checkout a file, the log message, and the date and
author information and then checkin that file to
their own system.

Are there really utilities out there that try to
to read RCS formats directly and do not allow for
rcsfile(5) syntax to be used? If so, could you
name any of them?

If such do exist, there would probably need to be
a utility to strip out the 'diff3hint ...;' lines
- From

RE: CVS corrupts binary files ...

2004-06-28 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Thursday, June 17, 2004 at 15:49:39 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 Nope, I got it.  The thing is, you can control pointers (e.g. makefiles
 containing references to files stored in a library somewhere) all you
 want, but that buys you nothing unless the targets of the pointers are
 also tightly controlled.

No, you didn't get it.

You seem to be among the many people who always forget to keep in mind
what CVS is _not_.  For example:  CVS is not a complete software
configuration management system.

You are correct:  CVS is a version control system.  And it does version
control only.  That means that it archives collections of files for
later reproducibility as a set (by label or branch/timestamp) or
individually.  And it does so without regard to the content of the
files, though it works best with files that contain only ASCII text.

What CVS does NOT do includes but is not limited to the following:
Compiling or building software from sources (i.e. build procedure);
packaging, installing, configuring, or deploying software produced by
a build procedure; passing collections of versions around and tracking
their progress through the development process (i.e. change control).

Furthermore, all of these must be repeatable procedures that produce
identical results when given identical inputs (or if not bit-for-bit
identical results then at least bug-for-bug compatible results), and as
output they must also record all inputs and outputs so that specific
results can be reproduced at will.  That means that the procedures must
remember environment variable settings, command line parameters, baseline
references, profiling and debugging flags, the operating system version
and patch level (and sometimes even the hardware configuration), and
a bazillion other things in such a way that they're readily available
so that someone can either a) run a procedure that's identical to another
one but with one or more specific and controlled variations, or b) reproduce
the results of a past build exactly.  And if a procedure fails for some
reason (e.g. dangling baseline pointer or OS incompatibility) then it
must diagnose the reason so that humans can perform the necessary recovery.

Anyone using CVS as a change tracking tool _must_ have some encompassing
software configuration management system as well.  If that encompassing
SCM system does not have tight control over _all_ of the components
and procedures and processes used in the production of the software
products then it is certainly not the fault of CVS.

This much is true, also.  Version control is not sufficient on its
own to build a good SCM system.  All of the pieces I listed above
that CVS does NOT do are also necessary components.  Some of these pieces
are readily available, and others must be built.

However, getting back to the issue that originated this thread, there
remains the question of what to do with code drops from external sources
(particularly drops that are delivered in binary form).  I maintain that
such code drops must be handled as any other sources:  Put them under
source control, and apply the necessary change, build, and deployment
procedures to treat it like any other part of the product.

Contrast this with Greg's recommendations, which I reproduce here:

++ From:   Greg A. Woods
++ Subject:Re: CVS corrupts binary files ...
++ Date:   Tue, 8 Jun 2004 17:15:29 -0400 (EDT)

++ [ On Saturday, June 5, 2004 at 13:01:48 (-0700), Adrian Constantin wrote: ]
++  Subject: Re: CVS corrupts binary files ... 
++ 
++  I don't wanna merge binary files, and I'm not likely
++  to modify them in my module (project). I just want cvs
++  to carry them along with the sources

++ Then your better tool is called a directory (i.e. outside of CVS) and
++ you use it with a simple reference to it from within your build system.

++ -- 
++ Greg A. Woods

and here:

++ From:   Greg A. Woods
++ Subject:Re: CVS corrupts binary files ...
++ Date:   Thu, 17 Jun 2004 16:12:15 -0400 (EDT)

++ [ On Wednesday, June 9, 2004 at 09:35:37 (-0400), Tom Copeland wrote: ]
++  Subject: Re: CVS corrupts binary files ...

...

++   Most of my Java projects use 3rd party jar files,
++  which are compressed tar balls, more or less.  And I certainly don't
++  want to try to merge foolib-0.1.jar with foolib-0.2.jar when a new
++  version comes out; I just want to put it in CVS so that it gets tagged
++  and exported and so forth.

++ No, you REALLY DO NOT want (or need) to do that.  What a waste.

++ What you should do is treat the foolib product files for what they are
++ and to install them as products on your build machines in directories
++ named after their complete version-specific identifiers.

++ Then you need only program your build system to refer to the appropriate
++ directory for the appropriate components and if your build

Re: Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-28 Thread Paul Sander
--- Forwarded mail from Greg Woods:

[ On Thursday, June 17, 2004 at 16:49:42 (-0700), Paul Sander wrote: ]
 Subject: Smoke, FUD (was Re: CVS corrupts binary files ...)

 If this is true, then we're in violent agreement.  But to date, you have
 argued that making the necessary changes to CVS to give better support
 for data types not handled well specifically by the diff and diff3 programs
 would break compatibility with RCS, which is demonstrably false.

Have you not looked at the content of an RCS file lately Paul?

RCS compatability is far more than just the adherence to the syntax
defined in rcsfile(5).  If the generic co program from the RCS package
cannot extract any and every revision of a file from a file claiming to
be an RCS file then that file is clearly not RCS compatible.

I have never, ever advocated changing the format of an RCS file in a
way that would break the ci, co, rcs, or rlog programs.  And although
I strongly advocate the replacement of user-exposed diff and merge
tools, I have never, ever advocated the replacement of the diff tool
that computes the deltas stored in an RCS file.

(That is not to say that I  have never suggested making incompatible
changes, but in context such suggestions have always carried caveats
and recognized the lack of desirability of losing a valuable feature.)

I don't know where you seem to be getting the idea that I'm recommending
doing a global search and replace of diff with some other tool.  That
is clearly not the case.  The RCS file format must be retained, unless
we as a group decide to abandon it after weighing the consequences.

However, I do advocate extending the RCS file format in ways that
the RCS API can accomodate.  The rcsfile(5) manual specifically allows
for extensions in the admin and delta sections of the file.  For
example, I do recommend using a newphrase in the admin section to identify
the type of data stored in the file, but not until the rename problem is
solved.

 How am I spreading Fear, Uncertainty, or Doubt? 

Maybe hypocrisy would be a better description of your approach to CVS.

I don't believe I'm misrepresenting any of my beliefs about CVS or SCM
in general.  I've tried very hard to explain them clearly, and I've tried
especially hard to drill them into that rock that you carry on your
shoulders, but I'm obviously using the wrong screwdriver.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-19 Thread Adrian Constantin
--- Lars [EMAIL PROTECTED] wrote:
 [EMAIL PROTECTED] wrote:
  --- Mark D. Baushke [EMAIL PROTECTED] wrote:
 
 
 Checking in binary files is not encouraged for cvs
 use.
  
   Well what can I do ? It happends that my project
 (a
   web site) includes binary files... 
  
 
 
 Here is a list which you can use as a starting point
 after checking 
 which file types are applicable for your system of
 course:
 

http://www.durak.org/cvswebsites/howto-cvs/node38.html
 
 Thanks, I modified my cvswrappers file a while ago.
 However I still check in binary files, which I hear 
 (and believe) cvs can handle well, but it's not 
 encouraged



__
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
http://promotions.yahoo.com/new_mail 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Tuesday, June 8, 2004 at 15:01:10 (-0700), Adrian Constantin wrote: ]
 Subject: Re: CVS corrupts binary files ... 

 
 --- Greg A. Woods [EMAIL PROTECTED] wrote:
  [ On Saturday, June 5, 2004 at 13:01:48 (-0700),
  Adrian Constantin wrote: ]
   Subject: Re: CVS corrupts binary files ... 
  
   I don't wanna merge binary files, 
  
  Then your better tool is called a directory (i.e.
  outside of CVS) 
  -- 
 
   You can't be serious about this...

Yes, I was, and am, absolutely serious about that.

CVS is _not_ a build system.

CVS is _not_ a complete software configuration system.

It doesn't matter what you're managing (C source, HTML source, nroff or
TeX source, etc.), CVS is only one of the tools you must use to handle
your source files.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Wednesday, June 9, 2004 at 09:15:24 (-0400), Jim.Hyslop wrote: ]
 Subject: RE: CVS corrupts binary files ... 

 Let's not throw the baby out with the bathwater, shall we? Granted, CVS was
 not *originally* designed to handle binary files. Granted, CVS does not
 handle binary files as well as it handles mergeable text files. But even
 with CVS's handicaps and limitations WRT binary, CVS is still orders of
 magnitude better than manually maintaining versions of files in a directory.

How do you figure that?  A plain old directory is infinitely better at
managing static content, binary or not, than _any_ versioning tool.
Anything over and above a plain old directory _only_ adds unnecessary
layers of complexity.

Haven't you learned yet that you'll do a lot better if you choose the
best tools for each job rather than hitting everything on the head with
your damn hammer!?!?!?!?!

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Wednesday, June 9, 2004 at 09:35:37 (-0400), Tom Copeland wrote: ]
 Subject: Re: CVS corrupts binary files ...

 On Tue, 2004-06-08 at 17:42, Paul Sander wrote:
  Keep in mind also that there's a difference between binary files and
  mergeable files.  
 
 That's a neat point.

Well, it's kind of a pointless point, neat or not.  The only thing
that's really important w.r.t. whether CVS can manage the file reliabily
and without headache is whether diff  patch can reliably copy changes
from one version of the file to another _and_ that any conflicts in
those copies can be detected and easily resolved by hand.

  Most of my Java projects use 3rd party jar files,
 which are compressed tar balls, more or less.  And I certainly don't
 want to try to merge foolib-0.1.jar with foolib-0.2.jar when a new
 version comes out; I just want to put it in CVS so that it gets tagged
 and exported and so forth.

No, you REALLY DO NOT want (or need) to do that.  What a waste.

What you should do is treat the foolib product files for what they are
and to install them as products on your build machines in directories
named after their complete version-specific identifiers.

Then you need only program your build system to refer to the appropriate
directory for the appropriate components and if your build system is
anywhere half decent you'll simply check in the build system
configuration source file(s) and tag them.  Once you've done that then
you can check out any release of your source and type make and the
right components will be combined with your sources to create your final
product.

CVS is _not_ a build system.

CVS is _not_ a complete configuration management system.

Please learn to use the right tool for the job

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Tom Copeland
On Thu, 2004-06-17 at 16:12, Greg A. Woods wrote:
   Most of my Java projects use 3rd party jar files,
  which are compressed tar balls, more or less.  And I certainly don't
  want to try to merge foolib-0.1.jar with foolib-0.2.jar when a new
  version comes out; I just want to put it in CVS so that it gets tagged
  and exported and so forth.
 
 No, you REALLY DO NOT want (or need) to do that.  What a waste.
 
 What you should do is treat the foolib product files for what they are
 and to install them as products on your build machines in directories
 named after their complete version-specific identifiers.

Hm.  Why not simply check these jar files into the repository where they
can be tagged/branched/exported and so forth?  Why should every
programmer on my team need to get all the versions of each jar file laid
out on his machine when he could just do a cvs up to get the current
stuff for his branch?

 Then you need only program your build system to refer to the appropriate
 directory for the appropriate components 

Why bother with that?  Just put the jar files in myproject/lib and point
the Ant script to them.  And if we've got a FAR_OUT branch that uses
foolib-0.3.jar, that jar file is in that branch and the Ant build.xml
there points to it.

 and if your build system is
 anywhere half decent you'll simply check in the build system
 configuration source file(s) and tag them.  

Yup, makes sense.

 Once you've done that then
 you can check out any release of your source and type make and the
 right components will be combined with your sources to create your final
 product.

Yup, that's what's happening now.  Maybe we're converging...

Yours,

Tom



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]


[ On Tuesday, June 8, 2004 at 16:21:03 (-0700), Mark D. Baushke wrote: ]
 Subject: Re: CVS corrupts binary files ... 

 It may be that the diff3 algorithm is not always
 the best one suited to do such mergers. 

That may be true, but the use of the traditional diff and diff3
algorithms for detecting and merging changes in the managed files is a
direct concequence of the fact CVS is built on top of RCS and RCS has no
alternative to using, and no _real_ way to specify any alternative, to
these algorithms (at least not without breaking RCS compatability).

Although the earliest releases of CVS used the rcsmerge program to
perform merges, I think you'll agree that the following are
equivalent:

rcsmerge -pversion1 -pversion2 file

versus:

co -pversion1  temp1
co -pversion2  temp2
diff3 -E -am file temp1 temp2

Current releases of CVS do the latter.  (Don't believe me?  Look at
the function named RCS_merge in the rcscmds.c source file.)  It's a
simple matter to replace the invocation of diff3 with a different tool.

Given this, statements like the following do nothing but spread FUD.
They are flatly false, and you would do the world a big favor if you
would stop writing them.

It might be desirable but it's not really possible without giving up on
the use of RCS in the back-end -- or at least without giving up on
backwards compatabiltiy with other RCS tools.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-17 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Wednesday, June 9, 2004 at 09:15:24 (-0400), Jim.Hyslop wrote: ]
 Subject: RE: CVS corrupts binary files ... 

 Let's not throw the baby out with the bathwater, shall we? Granted, CVS was
 not *originally* designed to handle binary files. Granted, CVS does not
 handle binary files as well as it handles mergeable text files. But even
 with CVS's handicaps and limitations WRT binary, CVS is still orders of
 magnitude better than manually maintaining versions of files in a directory.

How do you figure that?  A plain old directory is infinitely better at
managing static content, binary or not, than _any_ versioning tool.
Anything over and above a plain old directory _only_ adds unnecessary
layers of complexity.

I've done revision control by backup, and I've done revision control
by naming convention.  Both have proven to be disasters.

Introducing uncontrolled sources into your process is not the answer.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Eric Gorr
At 4:02 PM -0400 6/17/04, Greg A. Woods wrote:
People just need to learn to use the right tool for the job and to quit
being so bloody narrow minded when it comes to learning about new tools.
First, I do not claim to have anything resembling expert (or even 
mediocre) knowledge in the usage of CVS - but I do use it for simple 
tasks.

I have no problem using/learning new tools. I'd personally love to be 
able to use VooDoo for version control, but there are two problems:

1. It's not free
2. There is no standalone client for it
3. There is no windows version
#1 is, of course, a very compelling reason to use any piece of 
software that works. Can you point to an alternative to CVS that is 
also free?

There is one thing that I simply don't understand with respect to CVS 
and Binary Files.

Why would it not work well to use a CVS Wrapper to binhex (uuencode, 
etc.) a binary file and then essentially have CVS to only see your 
file as a text file?

It's pretty obvious to everyone that merge features of CVS will not 
work with binary files and should not be attempted.

However, diff  patch should work on a binhex'd file. Of course, the 
storage would be rather inefficient - probably requiring the storage 
of the entire file on every checkinbut then, disk space is cheap 
these days.

___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

At 4:02 PM -0400 6/17/04, Greg A. Woods wrote:

I have no problem using/learning new tools. I'd personally love to be 
able to use VooDoo for version control, but there are two problems:

1. It's not free
2. There is no standalone client for it
3. There is no windows version

#1 is, of course, a very compelling reason to use any piece of 
software that works. Can you point to an alternative to CVS that is 
also free?

Here are four:  RCS, Aegis, Monotone, OpenCM.

There is one thing that I simply don't understand with respect to CVS 
and Binary Files.

Why would it not work well to use a CVS Wrapper to binhex (uuencode, 
etc.) a binary file and then essentially have CVS to only see your 
file as a text file?

The key is that there's a distinction between text files and mergeable
files.  Programs like binhex and uuencode produce text files, but they're
not mergeable.

CVS works best on files that are both ASCII and mergeable.  CVS could be
made to work on files that mergeable but not ASCII.  Once that is done,
non-mergeable files could be made to look like mergeable files by supplying
a diff tool that works like cmp, and merge tool that works like cp; but you
must remember that the results of using such tools are not impressive.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-17 Thread Jim.Hyslop
Greg A. Woods wrote:
 [ On Wednesday, June 9, 2004 at 09:15:24 (-0400), Jim.Hyslop wrote: ]
  Subject: RE: CVS corrupts binary files ... 
 
  Let's not throw the baby out with the bathwater, shall we? Granted, 
  CVS was not *originally* designed to handle binary files. 
 Granted, CVS 
  does not handle binary files as well as it handles mergeable text 
  files. But even with CVS's handicaps and limitations WRT 
 binary, CVS 
  is still orders of magnitude better than manually 
 maintaining versions of files in a directory.
 
 How do you figure that?  A plain old directory is infinitely 
 better at managing static content, binary or not, than _any_ 
 versioning tool.
Ah, I think I've spotted the root of this disagreement. I was not talking
about static information, but binary information that can, and does, change.

For static information, yes, CVS is overkill. But if it changes, then I
stand by my earlier statement: CVS is orders of magnitude better than manual
versioning with directories.

-- 
Jim Hyslop
Senior Software Designer
Leitch Technology International Inc. (http://www.leitch.com)
Columnist, C/C++ Users Journal (http://www.cuj.com/experts)


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Eric Gorr
At 1:40 PM -0700 6/17/04, Paul Sander wrote:
 Why would it not work well to use a CVS Wrapper to binhex (uuencode,
etc.) a binary file and then essentially have CVS to only see your
file as a text file?
The key is that there's a distinction between text files and mergeable
files.  Programs like binhex and uuencode produce text files, but they're
not mergeable.
Well, as I stated...simply avoid the merge features on files that are 
not mergeable. It's not terribly difficult to determine that a file 
should not be merged after staring at a binhex'd file for = 1 
second, assuming one could not determine from the name of the file 
that merge functions should not be used.

CVS works best on files that are both ASCII and mergeable.
So, one is required to use the merge functions of CVS? They cannot be avoided?
If they can be avoided, this point seems irrelevant.
___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Thursday, June 17, 2004 at 16:25:02 (-0400), Tom Copeland wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Hm.  Why not simply check these jar files into the repository where they
 can be tagged/branched/exported and so forth?  Why should every
 programmer on my team need to get all the versions of each jar file laid
 out on his machine when he could just do a cvs up to get the current
 stuff for his branch?

Don't you have a build system?  (apparently you do going by your later
comments)

Can't it do all those things for you?

Let me repeat:  CVS is _not_ a build system.

Just because you can use CVS to update version-controlled files from
some central repository doesn't mean you should try to use CVS to copy
all types of files from all kinds of repositories.

If you have many and diverse build machines then put your static
(i.e. non-changing) components on a central machine in a public
directory and have your build system invoke the appropriate tool to copy
them into the build environment as necessary.  If you do that, and if
the way you reference those components includes information about their
version numbers (e.g. in the name of the directory they're installed
in), and if your build system is configured using normal source files
(e.g. text makefiles) that you commit to your CVS repository, then CVS
will track which version of which component is needed for every release.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Thursday, June 17, 2004 at 13:06:44 (-0700), Paul Sander wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Current releases of CVS do the latter.  (Don't believe me?  Look at
 the function named RCS_merge in the rcscmds.c source file.)  It's a
 simple matter to replace the invocation of diff3 with a different tool.

Huh!?!?!?

Since when does the phrase diff and diff3 algorithms identify any
particular program that might implement those algorithms?

Paul, _you_ are the one spreading FUD here.

In case you have forgotten I am intimately familiar with exactly how the
GNU diffutils code and the GNU patch code is integrated into the CVS
source.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Thursday, June 17, 2004 at 13:09:09 (-0700), Paul Sander wrote: ]
 Subject: RE: CVS corrupts binary files ...

 I've done revision control by backup, and I've done revision control
 by naming convention.  Both have proven to be disasters.

Obviously you tried to use these tehniques in isolation.

 Introducing uncontrolled sources into your process is not the answer.

Obviously you missed (or conveniently ignored) the step where the build
system's configuration source file(s) are checked into the CVS repository
and thus becomes a very much _controlled_ part of the SCM process.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Greg A. Woods
[ On Thursday, June 17, 2004 at 17:03:34 (-0400), Eric Gorr wrote: ]
 Subject: Re: CVS corrupts binary files ...

 #1 is, of course, a very compelling reason to use any piece of 
 software that works. Can you point to an alternative to CVS that is 
 also free?

Check the various FAQs related to software configuration management and
Google for relevant phrases.

There are quite a few such systems -- which you might choose will depend
on many factors only you can know!  ;-)


 There is one thing that I simply don't understand with respect to CVS 
 and Binary Files.
 
 Why would it not work well to use a CVS Wrapper to binhex (uuencode, 
 etc.) a binary file and then essentially have CVS to only see your 
 file as a text file?

Well, if you think you can easily resolve a conflict from a merge of a
binary file that's been encoded into some plain-text form, then I'll bet
you can also read and debug good old-fashioned hex dumps in your sleep
too!  :-)


 It's pretty obvious to everyone that merge features of CVS will not 
 work with binary files and should not be attempted.

Precisely!  :-)


 However, diff  patch should work on a binhex'd file.

No, they won't -- at least they won't unless you can properly decode,
successfully merge bits of, and then properly recode them into a
consistent hex dump again.

I.e. keep in mind what the C in CVS really means.  Even though it
comes first in the name it's really _very_ central to the design of the
system.

If you don't need/want to use a concurrent versioning system then please
don't try to use CVS, even if it is free, and even if it is the kind of
client/server system you're looking for.  Just because you have two
nails and a screw doesn't mean a hammer is the only tool you'll need.
You might even be able to eventually hammer the nails in with the handle
of your screwdriver, but I'm sure you'll agree it's still not the right
tool for the job either.

People do indeed manage to get by with just a screwdriver sometimes, and
they don't always hurt themselves or damage their screwdriver when they
hammer in nails with it either, but that still doesn't mean anyone
really should be advising them that they're doing the right thing.  They
do that sort of thing on the Red Green show, but they get away with it
because their goal is to be funny, not to build software, etc.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

At 1:40 PM -0700 6/17/04, Paul Sander wrote:
  Why would it not work well to use a CVS Wrapper to binhex (uuencode,
etc.) a binary file and then essentially have CVS to only see your
file as a text file?

The key is that there's a distinction between text files and mergeable
files.  Programs like binhex and uuencode produce text files, but they're
not mergeable.

Well, as I stated...simply avoid the merge features on files that are 
not mergeable. It's not terribly difficult to determine that a file 
should not be merged after staring at a binhex'd file for = 1 
second, assuming one could not determine from the name of the file 
that merge functions should not be used.

CVS works best on files that are both ASCII and mergeable.

So, one is required to use the merge functions of CVS? They cannot be avoided?
If they can be avoided, this point seems irrelevant.

Unfortunately, merging is a central aspect of the concurrent paradigm.
If you avoid merging, you abandon the concurrent model.  Such a thing
can be done, but it's not a natural usage model for CVS.

On the other hand, if CVS embraced additional merge algorithms (that could
be considered degenerate cases, like full content swapping) then CVS might
well work for unmergeable data types.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Doug Lee
Responding above rather than below largely because my comments are
general thoughts on the whole discussion...

There is wisdom in choosing the right tool for a job.  There is also
wisdom in making the best use of the tools you already know and have.
Both can be taken to unpleasant extremes.  I believe both extremes can
be wrong (from a functional standpoint).

The fact that CVS was designed for mergeable data means it should be
good at that.  It does not mean it absolutely cannot serve further
useful purposes.  Those who want to use CVS for further purposes would
be well advised to know just what CVS is and is not capable of doing
(note this is not the same as what it was originally designed for, but
rather is what it happens to be able to do reliably).

So for the job of managing versions of mergeable files, CVS bills
itself as ready, and it should do well.  For the job of managing
unmergeable files, it sounds to me like it can, regardless of original
intent, as long as you don't go trying impossible stuff.  For the job
of managing distribution of file sets among workstations (which may be
on a LAN or across a VPN connection or an ssh connection or whatever
but which do not necessarily have access to a central file location),
I find CVS reasonable.

And may I humbly suggest that, for the job of pursuading the unwashed
masses such as myself of the pitfalls and folly of using CVS for
further purposes than concurrent versioning, information might be a
better tool than inflamation. :-)  (Specifically to Greg:  The latest
post I saw from you, the one more precisely describing how one might
lay out binary files in directories, manage them with a
version-controlled config file, etc., has made me think more about
this than any other post to date.)

On Thu, Jun 17, 2004 at 06:16:32PM -0400, Greg A. Woods wrote:
 [ On Thursday, June 17, 2004 at 16:25:02 (-0400), Tom Copeland wrote: ]
  Subject: Re: CVS corrupts binary files ...
 
  Hm.  Why not simply check these jar files into the repository where they
  can be tagged/branched/exported and so forth?  Why should every
  programmer on my team need to get all the versions of each jar file laid
  out on his machine when he could just do a cvs up to get the current
  stuff for his branch?
 
 Don't you have a build system?  (apparently you do going by your later
 comments)
 
 Can't it do all those things for you?
 
 Let me repeat:  CVS is _not_ a build system.
 
 Just because you can use CVS to update version-controlled files from
 some central repository doesn't mean you should try to use CVS to copy
 all types of files from all kinds of repositories.
 
 If you have many and diverse build machines then put your static
 (i.e. non-changing) components on a central machine in a public
 directory and have your build system invoke the appropriate tool to copy
 them into the build environment as necessary.  If you do that, and if
 the way you reference those components includes information about their
 version numbers (e.g. in the name of the directory they're installed
 in), and if your build system is configured using normal source files
 (e.g. text makefiles) that you commit to your CVS repository, then CVS
 will track which version of which component is needed for every release.
 
 -- 
   Greg A. Woods
 
 +1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
 Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]
 
 
 ___
 Info-cvs mailing list
 [EMAIL PROTECTED]
 http://lists.gnu.org/mailman/listinfo/info-cvs

-- 
Doug Lee   [EMAIL PROTECTED]http://www.dlee.org
Bartimaeus Group   [EMAIL PROTECTED]   http://www.bartsite.com
Our chief want in life is somebody who will make us do what
we can. {Ralph Waldo Emerson}


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-17 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Eric Gorr [EMAIL PROTECTED] writes:

 Can you point to an alternative to CVS that is also free?

Certainly. There are a number of such programs.

Here are the Open Source and/or Free Software Source or configuration
management programs:

  Aegis- http://aegis.sourceforge.net/
  cscvs- http://wiki.gnuarch.org/moin.cgi/cscvs
  CVS  - http://www.cvshome.org/
  CVSNT- http://www.cvsnt.org/
  Darcs- http://abridgegame.org/darcs/
  FTPVCS   - http://www.ftpvcs.org/
  FreeVCS  - http://www.thensle.de/index.html
  GNU Arch - http://wiki.gnuarch.org/
  GNU CSSC - http://cssc.sourceforge.net/index.shtml
  JRMS - http://jrms.sourceforge.net/
  Katie- http://www.netcraft.com.au/geoffrey/katie/
  MetaCVS  - http://users.footprints.net/~kaz/mcvs.html
  Monotone - http://www.venge.net/monotone/
  OpenCM   - http://www.opencm.org/
  PRCS - http://prcs.sourceforge.net/
  RCS  - http://www.cs.purdue.edu/homes/trinkle/RCS/
  SourceJammer - http://www.sourcejammer.org/
  Stellation   - http://www.eclipse.org/stellation/
  Subversion   - http://subversion.tigris.org/
  Superversion - http://www.sourcejammer.org/
  svk  - http://svk.elixus.org/
  Vesta- http://www.vestasys.org/
  Xdelta   - http://sourceforge.net/projects/xdelta

I may have missed a few a quick google finds a list with descriptions
of some others of which I am not familiar:

  http://dmoz.org/Computers/Software/Configuration_Management/Tools/

It is true that cvs works well at managing sources, but it is not always
the best tool for the job if you have a complex environment.

Enjoy!
-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFA0jck3x41pRYZE/gRApo9AKCJ5yPZ/qNl9cujOeOMRaDU/XQhIgCfY5yX
GvKypvdButdp2GYFBiyJE3w=
=UKvN
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Smoke, FUD (was Re: CVS corrupts binary files ...)

2004-06-17 Thread Paul Sander
Whew, the smoke's getting thick in here!

From: [EMAIL PROTECTED]

[ On Thursday, June 17, 2004 at 13:06:44 (-0700), Paul Sander wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Current releases of CVS do the latter.  (Don't believe me?  Look at
 the function named RCS_merge in the rcscmds.c source file.)  It's a
 simple matter to replace the invocation of diff3 with a different tool.

Huh!?!?!?

Since when does the phrase diff and diff3 algorithms identify any
particular program that might implement those algorithms?

Then you don't object to swapping the diff and diff3  programs out for
others that might apply other 2-way and 3-way differencing algorithms that
are more appropriate to the data at hand, for purposes other than
maintainting the integrity of the RCS file format?

If this is true, then we're in violent agreement.  But to date, you have
argued that making the necessary changes to CVS to give better support
for data types not handled well specifically by the diff and diff3 programs
would break compatibility with RCS, which is demonstrably false.  The
maintenance of version history is sufficiently insulated from the user
interfaces of the content merge features that there is simply no credible
argument on that basis.

Paul, _you_ are the one spreading FUD here.

How am I spreading Fear, Uncertainty, or Doubt?  I'm claiming that CVS is
capable of doing more than it does, with only minor changes (i.e. none
that have significant impact on its architecture).  There's no FUD here,
other than what's in your head.  The world won't end if CVS changes its
merge tool, Greg.  Get over it.

In case you have forgotten I am intimately familiar with exactly how the
GNU diffutils code and the GNU patch code is integrated into the CVS
source.

Not so intimate that you fully understand how the CVS design constrains
the effects of certain kinds of changes, apparently.



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-09 Thread Jim.Hyslop
Greg A. Woods wrote:
 [ On Saturday, June 5, 2004 at 13:01:48 (-0700), Adrian 
 Constantin wrote: ]
  Subject: Re: CVS corrupts binary files ... 
 
  I don't wanna merge binary files, and I'm not likely to 
 modify them in 
  my module (project). I just want cvs to carry them along with the 
  sources
 
 Then your better tool is called a directory (i.e. outside 
 of CVS) and you use it with a simple reference to it from 
 within your build system.
Hehehehe... good one.

Hang on - there was no smiley there. Oh my - you were serious!

Let's not throw the baby out with the bathwater, shall we? Granted, CVS was
not *originally* designed to handle binary files. Granted, CVS does not
handle binary files as well as it handles mergeable text files. But even
with CVS's handicaps and limitations WRT binary, CVS is still orders of
magnitude better than manually maintaining versions of files in a directory.

Embrace change, Greg. These days, binary files are considered source. CVS
needs to move with the times, or step aside for another VM system.

-- 
Jim


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Greg A. Woods
[ On Saturday, June 5, 2004 at 17:10:58 (-0700), Paul Sander wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Source files are any files that cannot
 be reproduced automatically.

Nope, that's wrong too.

Source files are those files written and edited by humans.

Source _code_ is human (and machine) readable.

Intermediate files that might be binary in nature are not source.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Greg A. Woods
[ On Saturday, June 5, 2004 at 20:52:06 (-0700), Paul Sander wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Yeah, well, sending such hapless people away is easier
 than fixing the tool.

The tool is not broken -- I.e. there's nothing to fix!

CVS is designed _only_ for tracking changes in human written text files.

If you want to design (and implement) a new tool that does work well
with non-text files then please do so.  That'll give us yet another tool
to recommend people use when they want to.


  Demonstrating that such support
 could be added to CVS was done in less than eight man-hours;

Nope -- it's just not possible, as you should well know.  This is a
fundamental and purposeful design limitation in CVS.  The entire concept
of concurrent editing, which is central to the design and goals of CVS,
is completely antithetical to managing binary files.

Changing the design of CVS would make it some other VS that is not CVS
any more.


-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Greg A. Woods
[ On Saturday, June 5, 2004 at 13:01:48 (-0700), Adrian Constantin wrote: ]
 Subject: Re: CVS corrupts binary files ... 

 I don't wanna merge binary files, and I'm not likely
 to modify them in my module (project). I just want cvs
 to carry them along with the sources

Then your better tool is called a directory (i.e. outside of CVS) and
you use it with a simple reference to it from within your build system.

-- 
Greg A. Woods

+1 416 218-0098  VE3TCPRoboHack [EMAIL PROTECTED]
Planix, Inc. [EMAIL PROTECTED]  Secrets of the Weird [EMAIL PROTECTED]


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

 Source files are any files that cannot
 be reproduced automatically.

Nope, that's wrong too.

Source files are those files written and edited by humans.

That's exactly what I said.  Read that sentence again.

Source _code_ is human (and machine) readable.

This is true, after a fashion.  You still need a tool to read it.
You seem to think that such a tool MUST be a text editor, but in
fact such tools can edit data in other formats.

Intermediate files that might be binary in nature are not source.
 ^^  ^^^

That is true.  Doesn't matter what format they're in.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Paul Sander
Oops, I omitted the Sept. 16 patch.  Here it is at the bottom.

--- Forwarded mail from [EMAIL PROTECTED]

--- Forwarded mail from [EMAIL PROTECTED]

[ On Saturday, June 5, 2004 at 20:52:06 (-0700), Paul Sander wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Yeah, well, sending such hapless people away is easier
 than fixing the tool.

The tool is not broken -- I.e. there's nothing to fix!

CVS is designed _only_ for tracking changes in human written text files.

So you say.  I maintain that the diff and merge tools can be easily
swapped out without making significant changes to the CVS design.
With regard to merge tools, I proved my point with a patch posted to
this forum on Sept. 16, 2001.  I've included that patch at the bottom
of this message.

If you want to design (and implement) a new tool that does work well
with non-text files then please do so.  That'll give us yet another tool
to recommend people use when they want to.

No need.  See the patch below.

  Demonstrating that such support
 could be added to CVS was done in less than eight man-hours;

Nope -- it's just not possible, as you should well know.  This is a
fundamental and purposeful design limitation in CVS.  The entire concept
of concurrent editing, which is central to the design and goals of CVS,
is completely antithetical to managing binary files.

I don't believe it was a purposeful design limitation.  CVS was initially
designed before binary source formats were common, and it just didn't
happen to include a plug-in method to support them.

Keep in mind also that there's a difference between binary files and
mergeable files.  The two concepts are in fact orthogonal; there are
mergeable binary types (given a suitable tool), and there are unmergeable
text types.  CVS is bad at storing unmergeable files, no matter whether
or not they're binary files.  CVS can be easily modified to support
mergeable binary types, as I've demonstrated, without significant impact
to its design.

--- End of forwarded message from [EMAIL PROTECTED]


--- End of forwarded message from [EMAIL PROTECTED]

From [EMAIL PROTECTED] Sun Sep 16 01:42:14 2001
X-Delivered: at request of sendmail on bugs
Received: from zul.wakawaka.com (zul.wakawaka.com [192.148.188.5])
by bugs.wakawaka.com (8.8.8/8.8.5) with ESMTP id BAA11555
for [EMAIL PROTECTED]; Sun, 16 Sep 2001 01:42:14 -0700 (PDT)
Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
by zul.wakawaka.com (8.8.8/8.8.5) with ESMTP id BAA07411
for [EMAIL PROTECTED]; Sun, 16 Sep 2001 01:46:33 -0700 (PDT)
Received: from localhost ([127.0.0.1] helo=fencepost.gnu.org)
by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian))
id 15iXGh-0007cp-00; Sun, 16 Sep 2001 04:27:11 -0400
Received: from zul.wakawaka.com ([205.219.70.4])
by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian))
id 15iXEG-0007Se-00
for [EMAIL PROTECTED]; Sun, 16 Sep 2001 04:24:40 -0400
Received: from bugs.wakawaka.com (bugs.wakawaka.com [192.148.188.8])
by zul.wakawaka.com (8.8.8/8.8.5) with ESMTP id BAA07400
for [EMAIL PROTECTED]; Sun, 16 Sep 2001 01:24:38 -0700 (PDT)
Received: from localhost (localhost [[UNIX: localhost]])
by bugs.wakawaka.com (8.8.8/8.8.5) id BAA11542
for [EMAIL PROTECTED]; Sun, 16 Sep 2001 01:20:53 -0700 (PDT)
Message-Id: [EMAIL PROTECTED]
From: [EMAIL PROTECTED]
In-Reply-To: [EMAIL PROTECTED]
X-Mailer: Mail User's Shell (7.2.6 beta(4)+dynamic 03/19/98)
To: [EMAIL PROTECTED]
Subject: Demo of extensible merge (was Re: giving up CVS)
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.5
Precedence: bulk
List-Help: mailto:[EMAIL PROTECTED]
List-Post: mailto:[EMAIL PROTECTED]
List-Subscribe: http://mail.gnu.org/mailman/listinfo/info-cvs,
mailto:[EMAIL PROTECTED]
List-Id: Announcements and discussions for the CVS version control system 
info-cvs.gnu.org
List-Unsubscribe: http://mail.gnu.org/mailman/listinfo/info-cvs,
mailto:[EMAIL PROTECTED]
List-Archive: http://mail.gnu.org/pipermail/info-cvs/
Date: Sun, 16 Sep 2001 01:20:52 -0700
Status: OR

--- Forwarded mail from Greg Woods:

  CVS is perfectly capable of supporting even
 unmergable file types with only minor changes to its logic, specifically
 by adding an extensible mechanism to select the correct merge tool for the
 data type at hand.

So you seem to claim.  So far though you've only proposed the most
superficial of functional specifications, and certainly there's been no
appearance of running code to cloud the issue

I call your bluff and raise you a nickel...

 This is only true as long as CVS treats everything as text files.  There
 is nothing holding us back from modifying CVS to accomodate non-text
 files in a meaningful way and still retain the concurrent development
 paradigm intact.

Go for it.  I look forward to seeing your Binary CVS edition in the
very near future

Re: CVS corrupts binary files ...

2004-06-08 Thread Adrian Constantin

--- Greg A. Woods [EMAIL PROTECTED] wrote:
 [ On Saturday, June 5, 2004 at 13:01:48 (-0700),
 Adrian Constantin wrote: ]
  Subject: Re: CVS corrupts binary files ... 
 
  I don't wanna merge binary files, 
 
 Then your better tool is called a directory (i.e.
 outside of CVS) 
 -- 

  You can't be serious about this...

  My module is a web site. The directory structure is
  already created, with a several directories for  
  images. They have their place on the web server,
with
  already done aliases.
  Even if I don't edit binary files like source code,
  sometimes I may add or remove a few images ro/from
  my site. And in the future when the site is ready I 
 
  might want to redesign it and change image files.

  If images are outside of cvs, they won't be
delivered 
  by cvs checkout. This is not exactly recomanded.

  And I think my binaries are conceptualy part of the 
 
  project like source file are.

  Now maybe developing a web site with cvs is not very
 
  common. What if I have a real project with some   
  custom libraries, ordered especially for the
project.
  Theese are also binaries not likely to be merged or 
  changed, but I don't see an outside directory as a 
  good place for them

  Adrian Constantin
  
  And I don't wanna miss a thing




__
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

[ On Saturday, June 5, 2004 at 20:52:06 (-0700), Paul Sander wrote: ]
 Subject: Re: CVS corrupts binary files ...

 Yeah, well, sending such hapless people away is easier
 than fixing the tool.

The tool is not broken -- I.e. there's nothing to fix!

CVS is designed _only_ for tracking changes in human written text files.

So you say.  I maintain that the diff and merge tools can be easily
swapped out without making significant changes to the CVS design.
With regard to merge tools, I proved my point with a patch posted to
this forum on Sept. 16, 2001.  I've included that patch at the bottom
of this message.

If you want to design (and implement) a new tool that does work well
with non-text files then please do so.  That'll give us yet another tool
to recommend people use when they want to.

No need.  See the patch below.

  Demonstrating that such support
 could be added to CVS was done in less than eight man-hours;

Nope -- it's just not possible, as you should well know.  This is a
fundamental and purposeful design limitation in CVS.  The entire concept
of concurrent editing, which is central to the design and goals of CVS,
is completely antithetical to managing binary files.

I don't believe it was a purposeful design limitation.  CVS was initially
designed before binary source formats were common, and it just didn't
happen to include a plug-in method to support them.

Keep in mind also that there's a difference between binary files and
mergeable files.  The two concepts are in fact orthogonal; there are
mergeable binary types (given a suitable tool), and there are unmergeable
text types.  CVS is bad at storing unmergeable files, no matter whether
or not they're binary files.  CVS can be easily modified to support
mergeable binary types, as I've demonstrated, without significant impact
to its design.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Folks,

Greg writes:
 CVS is designed _only_ for tracking changes in
 human written text files.

Paul writes:
 Keep in mind also that there's a difference
 between binary files and mergeable files.
 The two concepts are in fact orthogonal; there
 are mergeable binary types (given a suitable
 tool), and there are unmergeable text types. CVS
 is bad at storing unmergeable files, no matter
 whether or not they're binary files. CVS can be
 easily modified to support mergeable binary
 types, as I've demonstrated, without significant
 impact to its design.

In my view, CVS was designed to add a model of
concurrent modification and automatic merges on
top of the previously existing Revision Control
System representation of files. The removal of
exclusive locking for changes is the fundamental
reason that CVS exists.

It may be that the diff3 algorithm is not always
the best one suited to do such mergers. 

For example, using a UTF16 character set in a file
for example may prove to be difficult to merge
even if the text in the file is only a simple
Chinese representation. Perhaps something like
the xcin project will eventually provide a diff3
for use in this case.

It may be desirable to mark UTF8 or UTF16 files as
being 'binary' in order to preserve the text more
exactly across operating systems that are not
(yet) friendly to such text.

For this reason, I take Paul's side on the issue
of the orthogonal nature of the discussion of
files that may or may not be merged using
automatic tooling of some sort.

I also share Greg's bias that using CVS to save
arbitrary binary data and/or derived objects is
not something that is a core competence of CVS.

For myself, I have no objection to a few small
icons being checked into a repository that will
also be holding sources that use them (of course,
I would usually favor them being convereted into a
text representation such as xbm format or the
like). I have seen where using very large binary
objects can cause problems for both users and
administrators.

I have also seen problems where folks checkin
derived objects such as PostScript files that are
pure text files, but normally are not merged
effectively by a diff3 program during a normal
'cvs update' of a file.

I believe that adding flexibility to CVS as to
what program should be used in place of diff3 for
doing a merge operation is desirable.

That said, I do not know the correct approach to
take for allowing the cvs admin or user do such a
merge with a non-diff3 tool. Some such tools are
(by their nature) interactive and this does not
seem to be a good fit with the CVS methodology.

Some such programs may only be available on client
machines while others would potentially be
available on the server. I typically favor that
such programs would be consdiered to be present on
the server and NOT on the client.

The exact semantics and rules under which a
substitution for a different program than diff3
could be used for a merge operation need to be
carefully considered before we jump into a change.

I suspect that we would need to add a filetype
recognizer into cvs as a preliminary step to help
to classify the type of a file that is to be
merged (or added or imported for that matter) in
order to know which of the potentially large
number of three-way merge programs and scripts
should be used or considered for use during a
given cvs merge operation.

I do not consider filetypes driven by the name of
a file to be useful in such deliberations.

If anyone has any suggestions or other patches
for this kind of feature, I would be interested
in hearing about them.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFAxknf3x41pRYZE/gRAsQtAJ0bBnvfNdF+2aPUzb/fr6qEuAFJcQCgluGR
7HTwfoQL1NFRQeQGeLosGP8=
=9laK
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-08 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Greg writes:
 CVS is designed _only_ for tracking changes in
 human written text files.

Paul writes:
 Keep in mind also that there's a difference
 between binary files and mergeable files.
 The two concepts are in fact orthogonal; there
 are mergeable binary types (given a suitable
 tool), and there are unmergeable text types. CVS
 is bad at storing unmergeable files, no matter
 whether or not they're binary files. CVS can be
 easily modified to support mergeable binary
 types, as I've demonstrated, without significant
 impact to its design.

In my view, CVS was designed to add a model of
concurrent modification and automatic merges on
top of the previously existing Revision Control
System representation of files. The removal of
exclusive locking for changes is the fundamental
reason that CVS exists.

It may be that the diff3 algorithm is not always
the best one suited to do such mergers.=20

Well said.

However, I'm not 100% convinced that automatic merges
is a prerequisite of the concurrency model.  I see no
reason why a command like cvs update could not spawn
a graphical merge tool (even for C source code, for
example).  However, such actions, should they stall,
must not stop others from doing their own merges or
from committing new changes.

For example, using a UTF16 character set in a file
for example may prove to be difficult to merge
even if the text in the file is only a simple
Chinese representation. Perhaps something like
the xcin project will eventually provide a diff3
for use in this case.

It may be desirable to mark UTF8 or UTF16 files as
being 'binary' in order to preserve the text more
exactly across operating systems that are not
(yet) friendly to such text.

For this reason, I take Paul's side on the issue
of the orthogonal nature of the discussion of
files that may or may not be merged using
automatic tooling of some sort.

Thanks!  :-)

I also share Greg's bias that using CVS to save
arbitrary binary data and/or derived objects is
not something that is a core competence of CVS.

Saving derived objects is definitely not a best practice
in SCM, at least not in the source control system.  Whether
or not arbitrary (or opaque) binary data should or should
not be stored in CVS is a sticky question, because it may
very well be source code (i.e. data that can be created or
modified only by human intervention), in which case I
believe it should be stored in the source control system.

For merges, opaque data must be handled appropriately.  One
way is to take Greg's approach and boot it out completely.
I believe a better way is to apply a simple selection tool
that takes the place of a merge tool.  (After all, any data
type is mergeable if you can swap out the entire contents of
a file in one chunk, right?  :-)

For myself, I have no objection to a few small
icons being checked into a repository that will
also be holding sources that use them (of course,
I would usually favor them being convereted into a
text representation such as xbm format or the
like). I have seen where using very large binary
objects can cause problems for both users and
administrators.

It's important to note that xbm format is also an unmergeable
data type, at least with diff3, even if such files do not
contain non-printable ASCII characters.  The reason is that
it's hard to edit an image without seeing it as an image.

I agree about storing large binary files in CVS; it would be nice
if there were multiple storage managers to choose from, depending
on their suitability to the data at hand.  But given that RCS
works (though admittedly not necessarily well) in all cases, it's
good enough (for 95%+ of the files thrown at it) that I don't see
a reason to change at this moment.  ('Course, I'd be happy to
participate in a separate discussion about creating an abstraction
layer over RCS and plugging in other storage managers...  :-)

I have also seen problems where folks checkin
derived objects such as PostScript files that are
pure text files, but normally are not merged
effectively by a diff3 program during a normal
'cvs update' of a file.

I believe that adding flexibility to CVS as to
what program should be used in place of diff3 for
doing a merge operation is desirable.

That said, I do not know the correct approach to
take for allowing the cvs admin or user do such a
merge with a non-diff3 tool. Some such tools are
(by their nature) interactive and this does not
seem to be a good fit with the CVS methodology.

I believe that the data type should be stored in a
newphrase in the admin section of the RCS file.
The bad thing about that is that if the RCS file is
recycled with a new data type, or if it contains
different data types on different branches, there
is no correct value for the newphrase.

Others have stated that the data type should be
stored with each version of the file.  That way
you can tell when a nonsensical merge is attempted.
But then the data type must be 

Re: CVS corrupts binary files ...

2004-06-07 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Gianni Mariani [EMAIL PROTECTED] writes:

 Mark D. Baushke wrote:
 
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Adrian Constantin [EMAIL PROTECTED] writes:
 
 
 ...
 
 If someone wanted to hack in an automagical
 recognition system that could be enabled for
 binary file types, I suppose we could consider
 adding it.
 
 
 It already exists, it's called file !
 
 $ file xx.cpp
 xx.cpp: ASCII C++ program text
 $ file dialog.gif
 dialog.gif: GIF image data, version 89a, 28 x 28
 
 it appears that it returns a line with text if the file is
 considered text.
 
 I think that would be fairly trivial to add to cvs.

If someone wants to write a patch that will run the
equivalent of 'file' on new source files to determine that
the file needs -kb by default, that would be a useful
extension to cvs client mode for both 'cvs add' and 'cvs
import' cases.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFAxBBS3x41pRYZE/gRApAxAKCl+1cE7B9BagquXV2y/nlOTWDGkQCgoI93
e9Hgsj3NpddLmyHuE3ct7Qw=
=fgE5
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-07 Thread Larry Jones
Mark D. Baushke writes:
 
 If someone wants to write a patch that will run the
 equivalent of 'file' on new source files to determine that
 the file needs -kb by default, that would be a useful
 extension to cvs client mode for both 'cvs add' and 'cvs
 import' cases.

Note carefully that Mark said the *equivalent* of file -- the 'file'
command doesn't exist on many of the plaforms CVS runs on.

-Larry Jones

In short, open revolt and exile is the only hope for change? -- Calvin


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-06 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Adrian Constantin [EMAIL PROTECTED] writes:

 
  Doug Lee [EMAIL PROTECTED] writes:
  
   Is it a proven thing that CVS can corrupt a
   binary file if no merges are tried and no
   CR/LF boundary rules are broken?
  
  No.

   I got it.
   It will corrupt my files in the default
   configuration after instalation, until I tell
   it that .gif files are not text

Correct. The present incarnation of cvs does not
know that a particular file should be treated as a
'binary' just because the file name happens to
match the pattern that some folks use for
Graphical Interchange Format.

I suppose we could collect the cvswrappers provided
as a hint into the contrib directory...

If someone wanted to hack in an automagical
recognition system that could be enabled for
binary file types, I suppose we could consider
adding it.

However, care would need to be taken that files
that happened to be in I8N international character
sets were handled properly too...

  svn, monotone, gnu arch and others have all arisen
  more recently than cvs and try in various ways to
  address the legacy problems that cvs continues to
  have.
  
  
 I think there are some binary diff algorithms...
  
  Indeed. Consider svn which uses xdelta internally.
  
  To be fair, CvsNt also has ways of dealing better
  with binary formats than the cvshome version.
  There is a hope that we can move toward merging
  the feature sets between those two major varitions
  of cvs over time, but it will likely take a bit of
  time as no one is being funded full time to work
  on just cvs development.
 
   So I see there are many alternatives
   available, but cvs has not changed. 

No, cvs has changed a great deal. There was a time
when it had significant problems with binary data.
Now, once you tell it that it should treat it as
binary, it mostly does the right thing (as has
been mentioned, it probably should have the
ability to plug in a series of merge programs
other than diff3 to handle binary data better).

It is also true that cvs lacks a full time
advocate for change in this direction.

Most of the advocates of major changes have left
the cvs project to work on a redesign called
subversion.

The current cvs has many problems that are not
yet addressed:

  - renaming files

  - versioning directories

  - dealing with symbolic links

  - better branching models

  - alternatives to diff3 for non-text files or
structured text files (a la XML and HTML)
where diff3 does not work well.

  - better access control models

There are a lot of others as well, just look at
the TODO file in the top-of-tree ccvs/TODO file
some time.

   Looks like developers want to offer their new
   products and not to support the original cvs
   :( Very sad to find out about this This is so
   strange and such a bad thing ...

It is not clear to me that incremental improvement
to cvs will necessarily solve some of the major
perceived flaws.

I'd love to see more detailed plans on how to add
improvements to cvs in a controlled way that lets
everyone come along for the ride without lots of
flag days taking place. However, that requires
real work and commitment and a vision of what
problems need to be solved.


  The design itself does not needs litte
  changes. cvs
   
  design can perfectly acomodate binary
  sources. It just has to be done (or
  implemented).
  
  Should I look forward to seeing your patches to
  help out on the project? They would be looked at
  with favor by all of your fellow cvs users.
 
   Well I write PHP now. I think there's a long way 
   from web pages to a serious public application

Okay.

   I hope I'll study xdelta in the near future

It is an interesting topic.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFAwrgY3x41pRYZE/gRArvxAJ9GIKVZ+E5SRUSswFlE+tdtnZXsUwCdErq+
C7A9YQeEwaDmJ5AC3wQ+Gwc=
=zrsI
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-06 Thread Spiro Trikaliotis
Hello,

* On Sat, Jun 05, 2004 at 08:38:15PM -0700 Gianni Mariani wrote:
*
 Peter Connolly wrote:
 
 Too dificult to set up, I think Shouldn't cvs have a list of binary
 file types preinstalled in the cvswrappers ?
 
 I agree, it should.
 
 I second that !  I did 3 years ago.
 
 http://www.mail-archive.com/[EMAIL PROTECTED]/msg09098.html

I tend to disagree: It should not!

Which extensions are binary files? Is .au a binary file? I know .au as
(Sun?) audio file, but I've also seen a project where .au had the
meaning of additional user or something like that, and was a text
file.

The same could be true for other extensions. What about .doc? .doc is
not necessarily a Word file, especially not on old project. So, my
conclusion is: Only the user is aware what type each file is. Checking
in a text file with -kb (from a Windows machine) is something which many
administrators do not like, either.

If you have so much fear about binary files, why don't you put * -kb
into your cvswrappers, and declare any text file explicitly? This way,
you cannot miss the binary files.

Best regards,
   Spiro.

-- 
Spiro R. Trikaliotis I'm subscribed to the mailing lists I'm posting,
http://www.trikaliotis.net/  so please refrain from Cc:ing me. Thank you.


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-06 Thread Gianni Mariani
Spiro Trikaliotis wrote:
Hello,
 

Hi !
...
If you have so much fear about binary files, why don't you put * -kb
into your cvswrappers, and declare any text file explicitly? This way,
you cannot miss the binary files.
 

Actually, that was suggested 3 years ago as well.  It turns out to be a 
very good one.  However, while there are fewer standard file extensions 
that are text, many ad-hoc files (non-standard extensions) are almost 
allways text.  Hence, it's easier to predict binary extensions that it 
is text extensions !

A suggestion 3 years ago was to run the file command on newly added 
files to determine it's format.  That practice would solve your issue I 
presume.

While you may be right about .doc or .au files, in practice, I have 
found that this has worked remarkably well.  Over the course of 3 years, 
I have never had anyone complain about files that CVS broke.

Almost all binary files added to CVS are - compressed source distros, 
prebuilt binaries, images, sound samples and open/win32 office files.

Anyhow, it works for me, YMMV !


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-06 Thread Gianni Mariani
Mark D. Baushke wrote:
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
Adrian Constantin [EMAIL PROTECTED] writes:
 

...
If someone wanted to hack in an automagical
recognition system that could be enabled for
binary file types, I suppose we could consider
adding it.
 

It already exists, it's called file !
$ file xx.cpp
xx.cpp: ASCII C++ program text
$ file dialog.gif
dialog.gif: GIF image data, version 89a, 28 x 28
it appears that it returns a line with text if the file is considered 
text.

I think that would be fairly trivial to add to cvs.
___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-06 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

* On Sat, Jun 05, 2004 at 08:38:15PM -0700 Gianni Mariani wrote:
*
 Peter Connolly wrote:
 
 Too dificult to set up, I think Shouldn't cvs have a list of binary
 file types preinstalled in the cvswrappers ?
 
 I agree, it should.
 
 I second that !  I did 3 years ago.
 
 http://www.mail-archive.com/[EMAIL PROTECTED]/msg09098.html

I tend to disagree: It should not!

Which extensions are binary files? Is .au a binary file? I know .au as
(Sun?) audio file, but I've also seen a project where .au had the
meaning of additional user or something like that, and was a text
file.

The same could be true for other extensions. What about .doc? .doc is
not necessarily a Word file, especially not on old project. So, my
conclusion is: Only the user is aware what type each file is. Checking
in a text file with -kb (from a Windows machine) is something which many
administrators do not like, either.

If you have so much fear about binary files, why don't you put * -kb
into your cvswrappers, and declare any text file explicitly? This way,
you cannot miss the binary files.

It's true that a general purpose file type identifier is not possible,
it is possible to get arbitrarily close to 100% accuracy on a per-shop
basis.  Also, relying on file extensions alone is notoriously inaccurate.
A mechanism like the Unix file(1) command that examines a file's content
is much better.  And then the configuration of it really needs to be in
the CVS admin's face from the start.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


CVS corrupts binary files ...

2004-06-05 Thread Adrian Constantin

Hi all,

I've created a simple repository on a Linux server
with one module wich is a web site. My working
directory is on a Windows machine and I have to use
ssh to connect to the server. I've tried several ssh
clients and with all of them the checkout command
creates corrupted image files in my working directory.
The module has been imported on the Linux server, from
the server, and the checkout is done from the Windows
machine.

If I just copy the images with WinSCP they are ok.
If I import them (on Linux) and then check them out
(on Windows) the images get corrupted

Also text files do not transfer properly; there's a
strange square at the end of the lines after checkout.
Again copying with WinSPC is ok...

I thought maybe the ssh client does LF-CR/LF
mapping, but I've tried several, including OpenSSH,
and thingd didn't change.

Must I tell explicitly to cvs that I transfer
text/binary files between different systems ?

Or maybe I can't have sources on Windows and Linux in
the same time and cvs to function correctly ?

Thank you
Timothy Madden




__
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Adrian Constantin [EMAIL PROTECTED] writes:

 I've created a simple repository on a Linux server
 with one module wich is a web site. My working
 directory is on a Windows machine and I have to use
 ssh to connect to the server. I've tried several ssh
 clients and with all of them the checkout command
 creates corrupted image files in my working directory.
 The module has been imported on the Linux server, from
 the server, and the checkout is done from the Windows
 machine.
 
 If I just copy the images with WinSCP they are ok.
 If I import them (on Linux) and then check them out
 (on Windows) the images get corrupted
 
 Also text files do not transfer properly; there's a
 strange square at the end of the lines after checkout.
 Again copying with WinSPC is ok...
 
 I thought maybe the ssh client does LF-CR/LF
 mapping, but I've tried several, including OpenSSH,
 and thingd didn't change.
 
 Must I tell explicitly to cvs that I transfer
 text/binary files between different systems ?

Yes, for binary files. See the -kb switch.

 Or maybe I can't have sources on Windows and Linux in
 the same time and cvs to function correctly ?

No. Sources which are text files will handle the line
endings properly for the client. You are describing a
problem with binary files.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFAwWvW3x41pRYZE/gRApLPAKDX0WGqqbk/IXrayPtNyBFQ1Oiu5QCgka7J
fj85gJI5pf+bjpcLRTHMIog=
=wrTy
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-05 Thread Peter Connolly
And to make the -kb automatic with binary file types, modify your
cvswrappers file...

https://www.cvshome.org/docs/manual/cvs-1.11.16/cvs_18.html#SEC166



 -Original Message-
 From: [EMAIL PROTECTED] [mailto:info-cvs-
 [EMAIL PROTECTED] On Behalf Of Mark D. Baushke
 Sent: Friday, June 04, 2004 11:45 PM
 To: Adrian Constantin
 Cc: [EMAIL PROTECTED]
 Subject: Re: CVS corrupts binary files ...
 
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Adrian Constantin [EMAIL PROTECTED] writes:
 
  I've created a simple repository on a Linux server
  with one module wich is a web site. My working
  directory is on a Windows machine and I have to use
  ssh to connect to the server. I've tried several ssh
  clients and with all of them the checkout command
  creates corrupted image files in my working directory.
  The module has been imported on the Linux server, from
  the server, and the checkout is done from the Windows
  machine.
 
  If I just copy the images with WinSCP they are ok.
  If I import them (on Linux) and then check them out
  (on Windows) the images get corrupted
 
  Also text files do not transfer properly; there's a
  strange square at the end of the lines after checkout.
  Again copying with WinSPC is ok...
 
  I thought maybe the ssh client does LF-CR/LF
  mapping, but I've tried several, including OpenSSH,
  and thingd didn't change.
 
  Must I tell explicitly to cvs that I transfer
  text/binary files between different systems ?
 
 Yes, for binary files. See the -kb switch.
 
  Or maybe I can't have sources on Windows and Linux in
  the same time and cvs to function correctly ?
 
 No. Sources which are text files will handle the line
 endings properly for the client. You are describing a
 problem with binary files.
 
   -- Mark
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.2.3 (FreeBSD)
 
 iD8DBQFAwWvW3x41pRYZE/gRApLPAKDX0WGqqbk/IXrayPtNyBFQ1Oiu5QCgka7J
 fj85gJI5pf+bjpcLRTHMIog=
 =wrTy
 -END PGP SIGNATURE-
 
 
 ___
 Info-cvs mailing list
 [EMAIL PROTECTED]
 http://lists.gnu.org/mailman/listinfo/info-cvs




___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-05 Thread Adrian Constantin

--- Peter Connolly [EMAIL PROTECTED] wrote:
 And to make the -kb automatic with binary file
 types, modify your
 cvswrappers file...
 


  
   Must I tell explicitly to cvs that I transfer
   text/binary files between different systems ?
  
  Yes, for binary files. See the -kb switch.
  
   Or maybe I can't have sources on Windows and
 Linux in
   the same time and cvs to function correctly ?
  
  No. Sources which are text files will handle the
 line
  endings properly for the client. You are
 describing a
  problem with binary files.
 

Thank you. 
After hours of tests I got it to work.
For the begining...

Too dificult to set up, I think 
Shouldn't cvs have a list of binary file types
preinstalled in the cvswrappers ?

Or maybe projects for Unix/Linux platforms do not
usualy have binary files, but I don't really think so...




__
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Adrian Constantin [EMAIL PROTECTED] writes:

 --- Peter Connolly [EMAIL PROTECTED] wrote:
  And to make the -kb automatic with binary file
  types, modify your
  cvswrappers file...
  
 
Must I tell explicitly to cvs that I
transfer text/binary files between
different systems ?
   
   Yes, for binary files. See the -kb switch.
   
Or maybe I can't have sources on Windows
and Linux in the same time and cvs to
function correctly ?
   
   No. Sources which are text files will handle
   the line endings properly for the client.
   You are describing a problem with binary
   files.
  
 
 Thank you. 
 After hours of tests I got it to work.
 For the begining...
 
 Too dificult to set up, I think 

You may wish to choose a tool that is better for
your particular needs. cvs is not at that friendly
at controlling and merging binary files.

 Shouldn't cvs have a list of binary file types
 preinstalled in the cvswrappers ?

Checking in binary files is not encouraged for cvs
use.

 Or maybe projects for Unix/Linux platforms do
 not usualy have binary files, but I don't really
 think so...

Unix/Linux platforms don't really have the same
problems converting to/from binary non-binary that
windows do.

You may wish to consider CvsNt.org as a 'better'
variation on cvs as more attention is paid to the
Windows platform.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFAwiD73x41pRYZE/gRAmSQAJ9eFyzZKWKAATcZdlgI/d9GgGPMfACcD3sc
1Jt+KfMt6FF/ZH9VIvTepfI=
=Uqbs
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Adrian Constantin

--- Mark D. Baushke [EMAIL PROTECTED] wrote:

 Adrian Constantin [EMAIL PROTECTED]
 writes:
  After hours of tests I got it to work.
  For the begining...
  
  Too dificult to set up, I think 
 
 You may wish to choose a tool that is better for
 your particular needs. cvs is not at that friendly
 at controlling and merging binary files.
 
I do wish to choose a better tool, but it doesn't
exists. They say if you wanna do something right, you
have to do it yourself.

I don't wanna merge binary files, and I'm not likely
to modify them in my module (project). I just want cvs
to carry them along with the sources

  Shouldn't cvs have a list of binary file types
  preinstalled in the cvswrappers ?
 
 Checking in binary files is not encouraged for cvs
 use.

 Well what can I do ? It happends that my project (a
 web site) includes binary files... 


 You may wish to consider CvsNt.org as a 'better'
 variation on cvs as more attention is paid to the
 Windows platform.

Well I will..., but I still have a Linux server
carring the repository and the release and 2 Windows
workstations where I work


Thank you
Constantin Adrian




__
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Adrian Constantin [EMAIL PROTECTED] writes:

 --- Mark D. Baushke [EMAIL PROTECTED] wrote:
 
  Adrian Constantin [EMAIL PROTECTED]
  writes:
   After hours of tests I got it to work.
   For the begining...
   
   Too dificult to set up, I think 
  
  You may wish to choose a tool that is better for
  your particular needs. cvs is not at that friendly
  at controlling and merging binary files.
  
 I do wish to choose a better tool, but it doesn't
 exists. They say if you wanna do something right, you
 have to do it yourself.
 
 I don't wanna merge binary files, and I'm not likely
 to modify them in my module (project). I just want cvs
 to carry them along with the sources

That is probably okay with the existing cvs.

   Shouldn't cvs have a list of binary file types
   preinstalled in the cvswrappers ?
  
  Checking in binary files is not encouraged for cvs
  use.
 
  Well what can I do ? It happends that my project (a
  web site) includes binary files... 

Discussions of various problems with binaries and cvs
have been a frequent topic in the info-cvs mailing list.
You may find it useful to look at the archive.

  You may wish to consider CvsNt.org as a 'better'
  variation on cvs as more attention is paid to the
  Windows platform.
 
 Well I will..., but I still have a Linux server
 carring the repository and the release and 2 Windows
 workstations where I work

The CvsNt.org tool may be compiled and run on a Linux server.

The WinCVS client is said to work well on windows with the cvsnt
executable.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)

iD8DBQFAwis53x41pRYZE/gRAglxAJ0SGn8cpBwt6LMUEWn2URQCQos8TwCgn57c
6HB1QB6gtVludlC2nsEF2Cs=
=AMoP
-END PGP SIGNATURE-


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-05 Thread Peter Connolly
 Too dificult to set up, I think
 Shouldn't cvs have a list of binary file types
 preinstalled in the cvswrappers ?

I agree, it should.




___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-05 Thread Peter Connolly
 You may wish to choose a tool that is better for
 your particular needs. cvs is not at that friendly
 at controlling and merging binary files.

Actually, if there are a lot of binary files in your repository, you might
want to consider switching to Subversion (http://subversion.tigris.org/)
since it mimics many of the CVS commands; has better support for binary
files; and there is a conversion script (http://cvs2svn.tigris.org/).

pc




___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-05 Thread Peter Connolly
 Too dificult to set up, I think
 Shouldn't cvs have a list of binary file types
 preinstalled in the cvswrappers ?

I agree, it should.




___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: CVS corrupts binary files ...

2004-06-05 Thread Peter Connolly
 You may wish to choose a tool that is better for
 your particular needs. cvs is not at that friendly
 at controlling and merging binary files.

Actually, if there are a lot of binary files in your repository, you might
want to consider switching to Subversion (http://subversion.tigris.org/)
since it mimics many of the CVS commands; has better support for binary
files; and there is a conversion script (http://cvs2svn.tigris.org/).

pc




___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Larry Jones
Adrian Constantin writes:
 
 Or maybe projects for Unix/Linux platforms do not
 usualy have binary files, but I don't really think so...

CVS is a *source* control system; source files are rarely binary.  It
does support them as an afterthought, but that's not what it was
designed to do.

-Larry Jones

I hate it when they look at me that way. -- Calvin


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Adrian Constantin writes:
 
 Or maybe projects for Unix/Linux platforms do not
 usualy have binary files, but I don't really think so...

CVS is a *source* control system; source files are rarely binary.

I disagree with this statement.  Source files are any files that cannot
be reproduced automatically.  That is, changes must be made to them
manually using some editor, and that editor need not be the likes of
vi or emacs.  MS Word (or Frame Maker) documents, images of various
formats, and documents from various design tools (e.g. GUI builders)
are common examples.

It
does support them as an afterthought, but that's not what it was
designed to do.

While this may be true, it turns out that CVS' design can accomodate
such files.  Support can be added with a relatively small amount of
effort, which was demonstrated circa Sept. 18, 2001 in this forum in
the form of a patch of the then-current release.  All that's needed is
a pluggable diff/merge tool based on the type of data.

And before someone rehashes the old you can't replace diff without
breaking RCS argument, remember that I'm not recommending replacing
the algorithm that computes the deltas.  This is strictly a UI thing
in the top layer that is well outside the back-end design.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Doug Lee
Is it a proven thing that CVS can corrupt a binary file if no merges
are tried and no CR/LF boundary rules are broken?  In other words, if
I set -kb on a binary file and then do nothing to it but commit
updates and sometimes request an old revision, keeping my sandbox in
the OS in which it was checked out, could I ever get a bad result?

This discussion of binary files has gone on a long time, but either I
missed the answer to this, or I never saw it stated.  If Greg Woods is
reading this, you implied it once in a rather angry message.  I
welcome the proof, preferably without the anger. smile

On Sat, Jun 05, 2004 at 05:10:58PM -0700, Paul Sander wrote:
 --- Forwarded mail from [EMAIL PROTECTED]
 
 Adrian Constantin writes:
  
  Or maybe projects for Unix/Linux platforms do not
  usualy have binary files, but I don't really think so...
 
 CVS is a *source* control system; source files are rarely binary.
 
 I disagree with this statement.  Source files are any files that cannot
 be reproduced automatically.  That is, changes must be made to them
 manually using some editor, and that editor need not be the likes of
 vi or emacs.  MS Word (or Frame Maker) documents, images of various
 formats, and documents from various design tools (e.g. GUI builders)
 are common examples.
 
 It
 does support them as an afterthought, but that's not what it was
 designed to do.
 
 While this may be true, it turns out that CVS' design can accomodate
 such files.  Support can be added with a relatively small amount of
 effort, which was demonstrated circa Sept. 18, 2001 in this forum in
 the form of a patch of the then-current release.  All that's needed is
 a pluggable diff/merge tool based on the type of data.
 
 And before someone rehashes the old you can't replace diff without
 breaking RCS argument, remember that I'm not recommending replacing
 the algorithm that computes the deltas.  This is strictly a UI thing
 in the top layer that is well outside the back-end design.
 
 --- End of forwarded message from [EMAIL PROTECTED]
 
 
 
 ___
 Info-cvs mailing list
 [EMAIL PROTECTED]
 http://lists.gnu.org/mailman/listinfo/info-cvs

-- 
Doug Lee   [EMAIL PROTECTED]http://www.dlee.org
Bartimaeus Group   [EMAIL PROTECTED]   http://www.bartsite.com
It is not the mountain in the distance which makes you want to stop
walking; but the grain of sand in your shoe.  --Anon


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Adrian Constantin

--- Paul Sander [EMAIL PROTECTED] wrote:
 
 Adrian Constantin writes:
  
  Or maybe projects for Unix/Linux platforms do not
  usualy have binary files, but I don't really
 think so...
 
 CVS is a *source* control system; source files are
 rarely binary.
 
 I disagree with this statement.  Source files are
 any files that cannot
 be reproduced automatically.  That is, changes must
 be made to them
 manually using some editor, and that editor need not
 be the likes of
 vi or emacs.  MS Word (or Frame Maker) documents,
 images of various
 formats, and documents from various design tools
 (e.g. GUI builders)
 are common examples.
 
  I tend to see this as a serious break in the cvs
  design . Today it is not relistic to assume
  serious projects with many developers involved will
  only contain text files. Also note that diff has the
  same problem, only for diff it might not be as acute
  as for cvs.

  Please note this problem is legacy since the days
  computer graphics were an advanced technology. When
  computers were text-based I can understand binary
  source files were a strange thing in any project.

  I would have expected things to evolve.
  I think there are some binary diff algorithms...

 It
 does support them as an afterthought, but that's
 not what it was
 designed to do.
 
 While this may be true, it turns out that CVS'
 design can accomodate
 such files.  Support can be added with a relatively
 small amount of
 effort, which was demonstrated circa Sept. 18, 2001
 in this forum in
 the form of a patch of the then-current release. 
 All that's needed is
 a pluggable diff/merge tool based on the type of
 data.
 
   The design itself does not needs litte changes. cvs

   design can perfectly acomodate binary sources. It
   just has to be done (or implemented).
   
   I think someday I'll use Subversion... when I'll
   have the time to take it from the begining and
start
   testing and evaluating it as I've done with cvs

   Adrian Constantin
   ---
   And I don't wanna miss a thing




__
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Mark D. Baushke
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Doug Lee [EMAIL PROTECTED] writes:

 Is it a proven thing that CVS can corrupt a binary file if
 no merges are tried and no CR/LF boundary rules are
 broken?

No.

 In other words, if I set -kb on a binary file and then do
 nothing to it but commit updates and sometimes request an
 old revision, keeping my sandbox in the OS in which it was
 checked out, could I ever get a bad result?

I have not ever noticed such a bad result.

I have noticed non-optimal checkout and commit
performance of binary versions of files when the
,v file starts to exceed a few hundred megabytes.

If the server is not properly configured with lots
of memory and temporary space, there can be problems
doing checkouts of lots of files of this type.

 This discussion of binary files has gone on a long time,
 but either I missed the answer to this, or I never saw it
 stated. If Greg Woods is reading this, you implied it once
 in a rather angry message. I welcome the proof, preferably
 without the anger. smile

The problem arises when two users concerntly modify a binary
file. After the first user commits, the second is stuck with
trying to figure out how to merge in the other set of changes
by hand with no help.

Advisory locking 'cvs watch' and 'cvs edit' is typically done
for binary files for this reason.

Adrian Constantin [EMAIL PROTECTED] writes:

  Adrian Constantin writes:
   
   Or maybe projects for Unix/Linux platforms
   do not usualy have binary files, but I
   don't really think so...
  
  CVS is a *source* control system; source
  files are rarely binary.
  
  I disagree with this statement. Source files
  are any files that cannot be reproduced
  automatically. That is, changes must be made
  to them manually using some editor, and that
  editor need not be the likes of vi or emacs.
  MS Word (or Frame Maker) documents, images of
  various formats, and documents from various
  design tools (e.g. GUI builders) are common
  examples.
 
   I tend to see this as a serious break in the
   cvs design .

Many people do. This is why I and others
consistently suggest that cvs may not be the best
source control system for general use.

   Today it is not relistic to assume serious
   projects with many developers involved will
   only contain text files. 

It is realistic to suggest that cvs is not
optimized for many kinds of 'serious' projects
with constraints of using binary files as a part
of the 'source' to be controlled.

svn, monotone, gnu arch and others have all arisen
more recently than cvs and try in various ways to
address the legacy problems that cvs continues to
have.

   Also note that diff has the same problem, only
   for diff it might not be as acute as for cvs.

It is bacically the same problem given that diff
is being used internally to store deltas between
versions.

   Please note this problem is legacy since the
   days computer graphics were an advanced
   technology. When computers were text-based I
   can understand binary source files were a
   strange thing in any project.

Possibly. We have always had binary objects, but
many of them have source formats that are
compatible with the older text-based
representations. It is just that most folks choose
not to save the files in those formats for source
control.

   I would have expected things to evolve.

Things have evolved.

   I think there are some binary diff algorithms...

Indeed. Consider svn which uses xdelta internally.

To be fair, CvsNt also has ways of dealing better
with binary formats than the cvshome version.
There is a hope that we can move toward merging
the feature sets between those two major varitions
of cvs over time, but it will likely take a bit of
time as no one is being funded full time to work
on just cvs development.

  It does support them as an afterthought, but
  that's not what it was designed to do.
  
  While this may be true, it turns out that CVS'
  design can accomodate such files. Support can
  be added with a relatively small amount of
  effort, which was demonstrated circa Sept. 18,
  2001 in this forum in the form of a patch of
  the then-current release. All that's needed is
  a pluggable diff/merge tool based on the type
  of data.
  
The design itself does not needs litte
changes. cvs
 
design can perfectly acomodate binary
sources. It just has to be done (or
implemented).

Should I look forward to seeing your patches to
help out on the project? They would be looked at
with favor by all of your fellow cvs users.

I think someday I'll use Subversion... when
I'll have the time to take it from the
begining and start testing and evaluating it
as I've done with cvs

Yup, svn is the next likely step for a lot of
folks. It is a good product and getting more and
more features and stability all the time.

-- Mark
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (FreeBSD)


Re: CVS corrupts binary files ...

2004-06-05 Thread Adrian Constantin

 Doug Lee [EMAIL PROTECTED] writes:
 
  Is it a proven thing that CVS can corrupt a binary
 file if
  no merges are tried and no CR/LF boundary rules
 are
  broken?
 
 No.
  I got it.
  It will corrupt my files in the default 
  configuration after instalation, until I tell it
  that .gif files are not text
 
 svn, monotone, gnu arch and others have all arisen
 more recently than cvs and try in various ways to
 address the legacy problems that cvs continues to
 have.
 
 
I think there are some binary diff algorithms...
 
 Indeed. Consider svn which uses xdelta internally.
 
 To be fair, CvsNt also has ways of dealing better
 with binary formats than the cvshome version.
 There is a hope that we can move toward merging
 the feature sets between those two major varitions
 of cvs over time, but it will likely take a bit of
 time as no one is being funded full time to work
 on just cvs development.
 

  So I see there are many alternatives available, but
  cvs has not changed. Looks like developers want to
  offer their new products and not to support the
  original cvs :(   Very sad to find out about this
  This is so strange and such a bad thing ...

   
 The design itself does not needs litte
 changes. cvs
  
 design can perfectly acomodate binary
 sources. It just has to be done (or
 implemented).
 
 Should I look forward to seeing your patches to
 help out on the project? They would be looked at
 with favor by all of your fellow cvs users.

  Well I write PHP now. I think there's a long way 
  from web pages to a serious public application

  I hope I'll study xdelta in the near future

  Adrian Constantin
  
  And I don't wanna miss a thing




__
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Is it a proven thing that CVS can corrupt a binary file if no merges
are tried and no CR/LF boundary rules are broken?  In other words, if
I set -kb on a binary file and then do nothing to it but commit
updates and sometimes request an old revision, keeping my sandbox in
the OS in which it was checked out, could I ever get a bad result?

I have personally kept binary files in CVS for many years.  (Since
before -kb was supported, but at that time all my systems were Unix
boxes.)

Since -kb and Windows interoperability were introduced, I have yet to
hear a credible report about a binary file corruption that did not involve
one of the following:
- Some kind of hardware or network failure that corrupted the RCS file.
- Someone did the initial checkin of the file without -kb set beforehand.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Gianni Mariani
Peter Connolly wrote:
Too dificult to set up, I think
Shouldn't cvs have a list of binary file types
preinstalled in the cvswrappers ?
   

I agree, it should.
 

I second that !  I did 3 years ago.
http://www.mail-archive.com/[EMAIL PROTECTED]/msg09098.html
BTW - the cvswrappers file in the posting above has served me well.
I have recently added openoffice files in the one I use currently.  If 
anyone wants it, email me and I'll clean it up and post it.

___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: CVS corrupts binary files ...

2004-06-05 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Doug Lee [EMAIL PROTECTED] writes:

 In other words, if I set -kb on a binary file and then do
 nothing to it but commit updates and sometimes request an
 old revision, keeping my sandbox in the OS in which it was
 checked out, could I ever get a bad result?

I have not ever noticed such a bad result.

I have noticed non-optimal checkout and commit
performance of binary versions of files when the
,v file starts to exceed a few hundred megabytes.

If the server is not properly configured with lots
of memory and temporary space, there can be problems
doing checkouts of lots of files of this type.

'Course, this holds true for multi-megabyte text files, too.
But those are rare...

 This discussion of binary files has gone on a long time,
 but either I missed the answer to this, or I never saw it
 stated. If Greg Woods is reading this, you implied it once
 in a rather angry message. I welcome the proof, preferably
 without the anger. smile

The problem arises when two users concerntly modify a binary
file. After the first user commits, the second is stuck with
trying to figure out how to merge in the other set of changes
by hand with no help.

There's no reason for CVS not to offer help, other than nobody's
added it, yet.  The only reason CVS doesn't help is because the
only merge tool it knows is diff3, which is text-based.  There's
not a reason in the world why it couldn't be replaced with
something more general, as was shown back in 2001.

Adrian Constantin [EMAIL PROTECTED] writes:

  Adrian Constantin writes:
  =20
   Or maybe projects for Unix/Linux platforms
   do not usualy have binary files, but I
   don't really think so...
 =20
  CVS is a *source* control system; source
  files are rarely binary.
 =20
  I disagree with this statement. Source files
  are any files that cannot be reproduced
  automatically. That is, changes must be made
  to them manually using some editor, and that
  editor need not be the likes of vi or emacs.
  MS Word (or Frame Maker) documents, images of
  various formats, and documents from various
  design tools (e.g. GUI builders) are common
  examples.
=20
   I tend to see this as a serious break in the
   cvs design .

Many people do. This is why I and others
consistently suggest that cvs may not be the best
source control system for general use.

Yeah, well, sending such hapless people away is easier
than fixing the tool.  Demonstrating that such support
could be added to CVS was done in less than eight man-hours;
that's less effort than installing and training on a
second tool.

   Today it is not relistic to assume serious
   projects with many developers involved will
   only contain text files.=20

It is realistic to suggest that cvs is not
optimized for many kinds of 'serious' projects
with constraints of using binary files as a part
of the 'source' to be controlled.

It is also realistic to suggest that it need not be
this way.

svn, monotone, gnu arch and others have all arisen
more recently than cvs and try in various ways to
address the legacy problems that cvs continues to
have.

And ignore.

   Also note that diff has the same problem, only
   for diff it might not be as acute as for cvs.

It is bacically the same problem given that diff
is being used internally to store deltas between
versions.

Well, it's certainly possible to abstract out the RCS
layer to provide better storage management for files
that don't make small deltas.  But the problem at hand
is not due to the diff algorithm being used to generate
the deltas; it's due to the diff and merge algorithm
used at the UI level.

   Please note this problem is legacy since the
   days computer graphics were an advanced
   technology. When computers were text-based I
   can understand binary source files were a
   strange thing in any project.

Possibly. We have always had binary objects, but
many of them have source formats that are
compatible with the older text-based
representations. It is just that most folks choose
not to save the files in those formats for source
control.

Possibly.  But what's the point if the text-based
representation is also unmergeable?

   I would have expected things to evolve.

Things have evolved.

   I think there are some binary diff algorithms...

Indeed. Consider svn which uses xdelta internally.

To be fair, CvsNt also has ways of dealing better
with binary formats than the cvshome version.
There is a hope that we can move toward merging
the feature sets between those two major varitions
of cvs over time, but it will likely take a bit of
time as no one is being funded full time to work
on just cvs development.

Which is why it doesn't support capabilities that
have already been demonstrated with alpha-quality
code.  As long as CVS development remains a hobby
project, we can't expect many new features to be
added, no matter what the level of demand is.

  It does support them as an afterthought, but
  that's not what it was 

Re: CVS corrupts binary files ...

2004-06-05 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

 Doug Lee [EMAIL PROTECTED] writes:
 
I think there are some binary diff algorithms...
 
 Indeed. Consider svn which uses xdelta internally.
 
 To be fair, CvsNt also has ways of dealing better
 with binary formats than the cvshome version.
 There is a hope that we can move toward merging
 the feature sets between those two major varitions
 of cvs over time, but it will likely take a bit of
 time as no one is being funded full time to work
 on just cvs development.

  So I see there are many alternatives available, but
  cvs has not changed. Looks like developers want to
  offer their new products and not to support the
  original cvs :(   Very sad to find out about this
  This is so strange and such a bad thing ...

There are other reasons to abandon CVS, too.  Having a
real ability to rename a file is one.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs