Re: newbie question on initializing repository

2004-06-08 Thread Spiro Trikaliotis
Hello,

* On Mon, Jun 07, 2004 at 05:34:02PM -0400 Larry Jones wrote:

  However, I now believe its not that simple, as the binary
  files(only) must be initialized with the -kb option.  Is that
  correct? If so, any suggestions on the simplest/easiest to go about
  this?
 
 If you can distinguish the binary files from the text files by their
 names (e.g., *.gif files are always binary), you can use the CVS
 wrappers facility to automatically handle the files correctly 

To add to this: If the text files are Unix-style (LF only), I also had
success in importing everything as binary, and changing the text files
to text afterwards with cvs admin.

If the text files are Windows style, doing a dos2unix on them, and then
treating it as in the above case, works, too.

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: Any CVS tricks for creating patch files?

2004-06-08 Thread Spiro Trikaliotis
Hello,

* On Mon, Jun 07, 2004 at 05:46:20PM -0400 [EMAIL PROTECTED] wrote:
 
 To create a patch, I could do this:
 
   % cvs co -d buggy -r Release_0_1 MyProj
   % cvs co -d fixed -r Release_0_1_Bugfixes MyProj
 
   % LC_ALL=C TZ=UTC0 diff -Naur buggy fixed  Release_0_1_Patch
 
 ...but I wonder if there are some CVS tricks to streamline the process
 further.

$ cvs co -r Release_0_1_Bugfixes MyProj
$ cd MyProf
$ cvs diff -uN -r Release_0_1  ../Release_0_1_Patch

I think (but I have not tested it) that

$ cvs rdiff -uN -r Release_0_1 -r Releae_0_1_Bugfixes  Release_0_1_Patch

should work, too.

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: Any CVS tricks for creating patch files?

2004-06-08 Thread Jim.Hyslop
Spiro Trikaliotis wrote:
 $ cvs rdiff -uN -r Release_0_1 -r Releae_0_1_Bugfixes  

What does the -N flag do? It isn't documented.


-- 
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: Info-cvs Digest, Vol 19, Issue 17

2004-06-08 Thread Bret A Cooper

Hello,

* On Mon, Jun 07, 2004 at 05:34:02PM -0400 Larry Jones wrote:

  However, I now believe its not that simple, as the binary
  files(only) must be initialized with the -kb option. Is
that
  correct? If so, any suggestions on the simplest/easiest to
go about
  this?
 
 If you can distinguish the binary files from the text files by
their
 names (e.g., *.gif files are always binary), you can use the CVS
 wrappers facility to automatically handle the files correctly


To add to this: If the text files are Unix-style (LF only), I also
had
success in importing everything as binary, and changing the text files
to text afterwards with cvs admin.

If the text files are Windows style, doing a dos2unix on them, and
then
treating it as in the above case, works, too.

Best regards,

  Spiro.

Spiro,
Thanks for your reponse. It prompts
a couple more questions. When you went back and ran the
cvs admin command, did you
have to run it once for every file you wanted to change?
Also, would it work equally well to
put all the files in as regular files and the run cvs admin
later
to change the binary files?

ThanksBret Cooper
IBM Global Services - ATT ADM Account
614.501.2540___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Info-cvs Digest, Vol 19, Issue 17

2004-06-08 Thread Spiro Trikaliotis
Hello Bret,

* On Tue, Jun 08, 2004 at 01:50:36PM -0400 Bret A Cooper wrote:
 
 Thanks for your reponse.  It prompts a couple more questions.  When
 you went back and ran the cvs admin command, did you have to run it
 once for every file you wanted to change?

Yes, this has to be run for every file to be changed. Anyway, you can
use wildcards, so a

cvs admin -kk *.c *.cc *.h makefile

and so on works very good.

Even if you forget to change a file to text mode, it does not do much
harm, as you can even do this afterwards.


 Also, would it work equally well to put all the files in as regular
 files and the run cvs admin later to change the binary files?

It depends upon your binary files. If 

1. your client runs Windows (CR/LF instead of LF), or
2. you binary files contain any of the RCS keywords ($Id$, $Log$, etc),
3. not sure if there are other conditions which could do havoc to your
   binary files,

chances are very good your binary files will get corrupted, and you will
not be able to recover them from CVS. Thus, checking everything in as
binary is a more defensive solution than the opposite.

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


cvs format strings

2004-06-08 Thread Jason Novotny
Hi,
 After upgrading cvs due to the vulnerability, I see the following:
cvs commit: warning:  Set to use deprecated info format strings.  Establish
compatibility with the new info file format strings (add a temporary '1' in
all info files after each '%' which doesn't represent a literal percent)
and set UseNewInfoFmtStrings=yes in CVSROOT/config.  After that, convert
individual command lines and scripts to handle the new format at your
leisure.
Mailing the commit message...
 We're using the Apache CVS log_accum.pl and my loginfo looks like:
DEFAULT $CVSROOT/CVSROOT/log_accum.pl %s
 What do I need to do? (I also added UseNewInfoFmtStrings=yes to the 
CVSROOT/config file)

 Thanks, Jason

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


Re: Any CVS tricks for creating patch files?

2004-06-08 Thread Spiro Trikaliotis
Hello Jim,

* On Tue, Jun 08, 2004 at 09:03:27AM -0400 Jim.Hyslop wrote:
 Spiro Trikaliotis wrote:
  $ cvs rdiff -uN -r Release_0_1 -r Releae_0_1_Bugfixes  
 
 What does the -N flag do? It isn't documented.

forget it, it is non-existant with rdiff, while it exists with diff. So
it is my fault.

with diff (not cvs diff), the option -N tells diff to treat files
which are non-existant in one directory as if it was there, but empty.
This way, the diff is complete. If you do not specify -N, diff only
tells you that some file was missing, but you don't see the contents of
it.

As I said, this option is missing with cvs rdiff, while it exists with
cvs diff (cvs 1.11.16). Is this difference by intention, or is it
accidentially? I would find it very usefull for rdiff.


The following simple skript demonstrates this:

--
#! /bin/bash

export CVSROOT=~/test.cvsroot/

cvs init
mkdir ~/test.cvsroot/test/

cvs co test
cd test

cat  f1 %
This is file 1
%

cvs add f1
cvs commit -m First version
cvs tag v1

cat  f2 %
This is file 2
%

cvs add f2
cvs commit -m 2nd version
cvs tag v2

rm f1
cvs rm f1
cvs commit -m 3rd version
cvs tag v3

cvs diff -u -r v2  ../v2_v3.diff
cvs diff -u -r v1  ../v1_v3.diff

cvs diff -uN -r v2  ../v2_v3_N.diff
cvs diff -uN -r v1  ../v1_v3_N.diff
--

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


Automatic merging

2004-06-08 Thread Carucci, Jason
I'm trying to get my company to move to CVS from Source Safe.  One of the
concerns that people have raised is that CVS does automatic merging of
changes with the repository.  Apparently they had bad experiences with PVCS
which did the same thing.  I personally never had these problems with PVCS,
but there it is.

My understanding is that even when CVS does the automatic merging of
changes, it does not commit them to the repository until you OK the changes
is that correct?  What has been the experience with this feature in CVS?

BTW, Source Safe also does automatic merging, but I think it does a rather
poor job.  I don't know why the CVS automatic merging is an issue, but I
can't explain human behavior.  I'm hoping CVS merging is better and I can
use that to sell it's use.


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


RE: Automatic merging

2004-06-08 Thread Jim.Hyslop
Carucci, Jason wrote:
 I'm trying to get my company to move to CVS from Source Safe. 

Have a look here: http://www.highprogrammer.com/alan/windev/sourcesafe.html
it may give you additional information to help you convince others.

 BTW, Source Safe also does automatic merging, but I think it 
 does a rather poor job.  I don't know why the CVS automatic 
 merging is an issue, but I can't explain human behavior.  I'm 
 hoping CVS merging is better and I can use that to sell it's use.

Comfort level. CVS is new and strange, Source Safe is familiar and
comfortable (even if it is badly broken). Logic tells you the worn out,
ragged slippers should be thrown in the garbage, but emotion rules and we
hang onto them.

-- 
Jim


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


Re: Automatic merging

2004-06-08 Thread Tom Copeland
On Tue, 2004-06-08 at 15:53, Frederic Brehm wrote:
 The only problem I have had is once when there was a project full of 
 cowboys who did not bother to communicate with each other and wanted to 
 fix everything themselves. The merge problems were a symptom of a 
 dysfunctional team and no source code control system could fix that.

Very nicely put.  Constant merge conflicts are usually a symptom, not a
problem.  

Yours,

Tom



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


Deleting a Directory

2004-06-08 Thread Jake Colman

We've followed the proper procedure for removing a subdirectory tree from our
source tree.  When we checkout the source tree it no longer creates the
directory hierarchy that we've removed.  The checkout process, however, stil
traverses the tree and prints out messages as it does so.  Is there a way to
tell cvs to stop doing this?

-- 
Jake Colman
Sr. Applications Developer
Principia Partners LLC
Harborside Financial Center
1001 Plaza Two
Jersey City, NJ 07311
(201) 209-2467
www.principiapartners.com



___
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: Branch mess, and starting a project with import

2004-06-08 Thread Greg A. Woods
[ On Friday, June 4, 2004 at 21:41:02 (-0400), Larry Jones wrote: ]
 Subject: Re: Branch mess, and starting a project with import

 Greg A. Woods writes:
  
  cvs import should really never be used for anything but third-party
  code that's going to be managed on a CVS-style magic vendor branch.
  
  (though it is relatively easy to remove all traces of the vendor branch
  if it's done soon enough)
 
 It's even easier to just ignore it.

It's not really 100% safe though -- at minimum the default branch must
be returned to the trunk _before_ any other branches are made.

Removing the tags also helps avoid future confusion, and once you've
gone that far then you may as well outdate the 1.1.1.1 revision too.

Personally I think using cvs add is easier, even if it means writing a
wee script on the command line to do deep adds.

-- 
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: Branch mess, and starting a project with import

2004-06-08 Thread Larry Jones
Greg A. Woods writes [re ignoring the vendor branch]:
 
 It's not really 100% safe though -- at minimum the default branch must
 be returned to the trunk _before_ any other branches are made.

Why?  What practical difference does it make whether the branch is
rooted off the trunk revision or the identical revision on the vendor
branch?

-Larry Jones

Mr. Subtlety drives home another point. -- Calvin


___
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: Any CVS tricks for creating patch files?

2004-06-08 Thread Larry Jones
Spiro Trikaliotis writes [re -N]:
 
 As I said, this option is missing with cvs rdiff, while it exists with
 cvs diff (cvs 1.11.16). Is this difference by intention, or is it
 accidentially? I would find it very usefull for rdiff.

It's not just useful, it's essential.  The option doesn't exist because
it's always assumed for rdiff!

-Larry Jones

Even my FRIENDS don't do what I want. -- Calvin


___
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