Re: outsider's perspective

2003-05-29 Thread Kaz Kylheku
On Tue, 27 May 2003, Greg A. Woods wrote:

 No concurrent versioning system with a shared repository, and
 particularly not one that can operate in a client/server mode, can ever
 possibly make any use of ownership, nor even of most permissions bits.
 Ownership information, and most permissions bits, MUST always be
 specific to the client and it MUST NOT be dictated by the repository.

I agree. By definition, nobody should ``own'' any file in a project.
Files are there so they can be shared and worked on by many people.
In version control, access control makes sense at the granularity of a
whole project: who gets read access to the whole thing, and who gets
read-write.  A versioned tree is effectively one object.



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


Re: outsider's perspective

2003-05-29 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

On Tue, 27 May 2003, Greg A. Woods wrote:

 No concurrent versioning system with a shared repository, and
 particularly not one that can operate in a client/server mode, can ever
 possibly make any use of ownership, nor even of most permissions bits.
 Ownership information, and most permissions bits, MUST always be
 specific to the client and it MUST NOT be dictated by the repository.

I agree. By definition, nobody should ``own'' any file in a project.
Files are there so they can be shared and worked on by many people.
In version control, access control makes sense at the granularity of a
whole project: who gets read access to the whole thing, and who gets
read-write.  A versioned tree is effectively one object.

Many large projects divvy up the code among many developers and prefer
to limit write access to specific areas of the repository to specific
users authorized to work on that specific code.  Sometimes they also
globally deny write access to other users, and globally deny all access
to still other users.  CVS permits this to a degree by using filesystem
access permissions in the repository.

Many small projects don't want to think about access control, so giving
users global read or write access to the repository is adequate for their
needs.

I've supported both environments with CVS.

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



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


Re: outsider's perspective

2003-05-29 Thread Greg A. Woods
[ On Tuesday, May 27, 2003 at 15:32:49 (-0700), Steve deRosier wrote: ]
 Subject: Re: outsider's perspective

 As Don already pointed out, this is very unfair.  I don't have any 
 interest working with a project that is held tightly by a very small 
 group of CVS gurus that feel that their way is the only way to do it. 

The truth is that a small project like CVS (or like a mail transport or
any other small program that one programmer can easily understand) is
indeed actually best managed and maintained by a very small group of
maintainers, or even by one person, provided that the group or the one
have a really strong vision of what the program should do (unless
they're so lucky as to have a fixed and well defined standard to
implement).

Even something as big as the Linux kernel would never have succeeded if
there were not a very small team of gurus carefully selecting what
actualy gets included in it.

  Why would I spend time 
 trying to learn the CVS codebase and then make changes if I feel that 
 whatever I do is simply going to be summarily rejected anyway?

Would you rather pay more money for a commercial product?  Would you
rather spend more time writing your tools from scratch?  It's your
decision -- nobody is forcing you to work on and use CVS.

With open-source software you are free to adapt that software to your
needs without having to start from scratch.  You're also free to share
your changes, but at the same time other users are free to ignore your
changes too.

-- 
Greg A. Woods

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


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


outsider's perspective

2003-05-27 Thread Phil R Lawrence
Well, I want to say thank you to all who posted regarding my query regarding dir 
versioning.  That was a heck of a discussion.  My resulting perspective:  CVS seems 
innapropriate for our real world needs, preferring instead to serve a purer 
versioning paradigm.  (A paradigm which, by the way, seems too complex for me to 
easily understand.)

To recap, I was looking for:
  - the complete history and versioning of every individual file
  - the ability to recreate dir structures, including hard and
symbolic links

These 2 things would have allowed me to checkout our whole ERP dir structure as of a 
given date.  Sweet!  

Greg says to use the right tool for the right job.  Well, I wish CVS were the right 
tool, because the two right tools I've read about have real problems!

ClearCase:
ClearCase costs a lot of money.  I mean a *lot* of money.  Now, my organization might 
pay for it, or they might not, I don't know.  We are a University in the USA, so we do 
have money.  But I guarantee most of this world would never in a million years be able 
to pay that sort of money.  So while my org might get by, the rest of the world 
suffers for the lack of an open source solution.

My own custom build tool, wrapped around CVS:
Gimme a break.  It's taken our ERP vendor a decade (more?) to evolve their current ... 
um...  way of doing things.  I'm pretty good at hacking and munging, but I am not 
prepared to try and automate all of the linking and the recreation of the other 
inconsistent results of their upgrade scripts upon CVS checkout.  No, I need a tool 
that can simply capture the *results* of their way of doing things and leave it at 
that.

In conclusion, I know I have little choice but to follow Greg's advice.  I'll use CVS 
for my little perl modules, but I'll be sorry to report to my boss that CVS won't work 
for our ERP versioning project.

Phil


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


Re: outsider's perspective

2003-05-27 Thread Donald Sharp
Have you looked at subversion?  Or what about bitkeeper?

I'm pretty sure that subversion can handle directory versioning.

I don't know about bitkeeper as that I refuse to download the 
source due to their restrictive liscensing agreement...

donald
On Tue, May 27, 2003 at 08:50:02AM -0500, Phil R Lawrence wrote:
 Well, I want to say thank you to all who posted regarding my query regarding dir 
 versioning.  That was a heck of a discussion.  My resulting perspective:  CVS seems 
 innapropriate for our real world needs, preferring instead to serve a purer 
 versioning paradigm.  (A paradigm which, by the way, seems too complex for me to 
 easily understand.)
 
 To recap, I was looking for:
   - the complete history and versioning of every individual file
   - the ability to recreate dir structures, including hard and
 symbolic links
 
 These 2 things would have allowed me to checkout our whole ERP dir structure as of a 
 given date.  Sweet!  
 
 Greg says to use the right tool for the right job.  Well, I wish CVS were the right 
 tool, because the two right tools I've read about have real problems!
 
 ClearCase:
 ClearCase costs a lot of money.  I mean a *lot* of money.  Now, my organization 
 might pay for it, or they might not, I don't know.  We are a University in the USA, 
 so we do have money.  But I guarantee most of this world would never in a million 
 years be able to pay that sort of money.  So while my org might get by, the rest of 
 the world suffers for the lack of an open source solution.
 
 My own custom build tool, wrapped around CVS:
 Gimme a break.  It's taken our ERP vendor a decade (more?) to evolve their current 
 ... um...  way of doing things.  I'm pretty good at hacking and munging, but I am 
 not prepared to try and automate all of the linking and the recreation of the other 
 inconsistent results of their upgrade scripts upon CVS checkout.  No, I need a tool 
 that can simply capture the *results* of their way of doing things and leave it at 
 that.
 
 In conclusion, I know I have little choice but to follow Greg's advice.  I'll use 
 CVS for my little perl modules, but I'll be sorry to report to my boss that CVS 
 won't work for our ERP versioning project.
 
 Phil
 
 
 ___
 Info-cvs mailing list
 [EMAIL PROTECTED]
 http://mail.gnu.org/mailman/listinfo/info-cvs


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


Re: outsider's perspective

2003-05-27 Thread Steve deRosier
Phil,

As you know, CVS doesn't version directories and frankly was never 
designed with that in mind (never mind the argument over if it should or 
should not, it simply doesn't).  But...there is a program that does 
record directory structure: tar.  Perhaps you could somehow use tar in 
conjunction w/ CVS to do what you want to do.

OR

Alternatively, since you're a Perl programmer, why not just write a 
simple script to parse the directories.  You could write two scripts:
Script1.pl - This one recursively parses the directories, writing a 
file (or to stdout) a representation (in text, best if easily human 
readable) of the directory structure.
Script2.pl - This one parses the representation file and creates the 
directory structure.

The representation since it is in text _could_ and in this scenario 
_should_ be checked into CVS and properly versioned.  There may be a way 
to get CVS to handle a ci and co of the full ERP system using these 
scripts and the wrappers (not sure, I've never used the wrappers), but 
if not, you could always have a project 'ERP' that contains a Makefile 
and the representation file.  You checkout the ERP module, run make, and 
boom, you've got your whole ERP retrieved from the repository.  The 
Makefile would have the instructions to:
1. run Script2.pl on the representation file and build the ERP directory 
structure
2. run the necessary CVS co or export commands to grab the required 
files and put them in the right places.

Maybe your Makefile could have both a ci and a co target so you could 
run 'make co' and 'make ci' to do what you want to do.

Anyone with some competence in Perl and make should be able to build 
this little build environment in a few days (and don't ask me, I already 
have a full time job).  Do it in house or hire a consultant.  (And don't 
forget to check the scripts into CVS while you're at it).

But, you've got to decide on a trade off - pay the big bucks for 
ClearCase or pay (either time or money) to have someone build you a 
custom build environment.  And, you need to evaluate ClearCase to decide 
if it really does what you are trying to do, or if you're going to have 
to bend to their way of doing things.  I don't know, I have no 
experience or knowledge with ClearCase at all.

Really, this was all anyone was trying to suggest when they said that 
CVS doesn't do directories and you'd have to use a build tool to handle 
them (and frankly, this is the 'proper' way to do it from the CVS 
paradigm).

As to the CVS paradigm, it's pretty simple:
CVS versions files (text files primarily) and allows for multiple people 
to checkout and edit those files concurrently.  CVS doesn't think 
anything about directory structure except that it is possible to nest 
Modules within one another.  (Frankly it seems to work best and is 
happiest when the directory structure is relatively flat.)  Directories 
have no purpose other than to be containers for files (which CVS does 
care about and will version) and as such, other than structure and name, 
are so un-interesting to be beneath notice.

That's it.  Don't think too hard on it.  As is typical with Linux and 
other UNIX systems, CVS is a simple tool meant to do one simple job and 
nothing else.  CVS versions files.  If you want to do more, add more 
tools into the mix (tar collects files and directories into one large 
file, but doesn't compress them; gzip compresses single files but 
doesn't collect them; together the two can grab and archive a large 
swath of the filesystem and make it small enough to fit on one CD).

I don't know if any of this helps, but I hope I gave you an idea that 
you hadn't considered.

- Steve

Phil R Lawrence wrote:
Well, I want to say thank you to all who posted regarding my query regarding dir versioning.  That was a heck of a discussion.  My resulting perspective:  CVS seems innapropriate for our real world needs, preferring instead to serve a purer versioning paradigm.  (A paradigm which, by the way, seems too complex for me to easily understand.)

To recap, I was looking for:
  - the complete history and versioning of every individual file
  - the ability to recreate dir structures, including hard and
symbolic links
These 2 things would have allowed me to checkout our whole ERP dir structure as of a given date.  Sweet!  

Greg says to use the right tool for the right job.  Well, I wish CVS were the right tool, because the two right tools I've read about have real problems!

ClearCase:
ClearCase costs a lot of money.  I mean a *lot* of money.  Now, my organization might 
pay for it, or they might not, I don't know.  We are a University in the USA, so we do 
have money.  But I guarantee most of this world would never in a million years be able 
to pay that sort of money.  So while my org might get by, the rest of the world 
suffers for the lack of an open source solution.
My own custom build tool, wrapped around CVS:
Gimme a break.  It's taken our ERP vendor a decade (more?) 

Re: outsider's perspective

2003-05-27 Thread Greg A. Woods
[ On Tuesday, May 27, 2003 at 11:39:22 (-0700), Steve deRosier wrote: ]
 Subject: Re: outsider's perspective

 As you know, CVS doesn't version directories and frankly was never 
 designed with that in mind (never mind the argument over if it should or 
 should not, it simply doesn't).  But...there is a program that does 
 record directory structure: tar.  Perhaps you could somehow use tar in 
 conjunction w/ CVS to do what you want to do.

CVS already does effectively what tar does, and it already does it with
support for recording the addition and deletion of files temporally,
something which tar obviously cannot do.

-- 
Greg A. Woods

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


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


Re: outsider's perspective

2003-05-27 Thread Phil R Lawrence
On Tue, 27 May 2003 14:24:50 -0400
Donald Sharp [EMAIL PROTECTED] wrote:

 Have you looked at subversion?  Or what about bitkeeper?
 
 I'm pretty sure that subversion can handle directory versioning.

Yeah, subversion looks promising, but symbolic links aren't slated for inclusion 
untill after version 1.0, and I didn't see anything about Hard links.

Thanks for the tip on bitkeeper, though.  I emailed their staff just now.  We'll see 
what they have to say.

Phil


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


Re: outsider's perspective

2003-05-27 Thread Phil R Lawrence
On Tue, 27 May 2003 11:39:22 -0700
Steve deRosier [EMAIL PROTECTED] wrote:

 That's it.  Don't think too hard on it.  As is typical with Linux and 
 other UNIX systems, CVS is a simple tool meant to do one simple job and 
 nothing else.  CVS versions files.  If you want to do more, add more 
 tools into the mix

You know, that does paint a rosier, and fairer picture.  I believe in the usefulness 
of using the pipe on the command line, and this does seem analogous.  Thanks!

As for the perl wrappers, yeah, I had gone as far in my thinking as you did in your 
note.  The hangups start when considering how to determine at checkin time which of 
the n hard links will become a file actually stored in CVS, and how to track the other 
hard links to be sure they are updated upon checkout.

I suppose that's doable also, but...  how much hacking and wrapping is too much?  I 
guess that's another tradeoff.  Piping this to that to the other on my own personal 
command line is one thing, but this will be an scm system to be used by one and all.  
Some in my department are known to be set in their ways, and complexity is anathema.  
When I began looking into CVS, the complexity of the tagging/branching syntax was 
almost enough to make it a non-contendor for our users.

I'll keep looking for now.  Thanks again for your fair(er) thoughts on CVS.

Phil


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


Re: outsider's perspective

2003-05-27 Thread Kaz Kylheku
On Tue, 27 May 2003, Steve deRosier wrote:

 Alternatively, since you're a Perl programmer, why not just write a 
 simple script to parse the directories.  You could write two scripts:
 Script1.pl - This one recursively parses the directories, writing a 
 file (or to stdout) a representation (in text, best if easily human 
 readable) of the directory structure.
 Script2.pl - This one parses the representation file and creates the 
 directory structure.
 
 The representation since it is in text _could_ and in this scenario 
 _should_ be checked into CVS and properly versioned.

Or you could just Meta-CVS, which has been out well over a year.

You have the basic idea right, but it takes more than a handful of perl
scripts to make robust, smooth version control application that takes
care of the corner cases and error situations.



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


Re: outsider's perspective

2003-05-27 Thread Kaz Kylheku
On Tue, 27 May 2003, Phil R Lawrence wrote:

 Date: Tue, 27 May 2003 10:16:00 -0500
 From: Phil R Lawrence [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Subject: Re: outsider's perspective
 
 On Tue, 27 May 2003 14:24:50 -0400
 Donald Sharp [EMAIL PROTECTED] wrote:
 
  Have you looked at subversion?  Or what about bitkeeper?
  
  I'm pretty sure that subversion can handle directory versioning.
 
 Yeah, subversion looks promising, but symbolic links aren't slated
 for inclusion untill after version 1.0, and I didn't see anything about
 Hard links.

When I heard that the SVN guys were planning symlinks, I took the two
days of effort to put them into Meta-CVS. It took some huffing and
puffing, but it was worth it. I ended up using them in a couple of
projects.

Meta-CVS could in principle support hard links as well. I can visualize
quite crisply how it would work, but I currently have no incentive to
do the work.

If I think that something is useful to the product (i.e. *I* can use it
myself, or it provides some strategic advantage) then I might put it
in.

It shouldn't take more than around four 40 hour developer-weeks to do
it (and I mean do it right, so that every operation is properly aware
of hard link support, including ``mcvs grab'').



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


Re: outsider's perspective

2003-05-27 Thread Steve deRosier
Greg,

I wasn't trying to indicate that tar was the perfect tool for this, or 
even that it was or might be the right tool.  I was simply suggesting 
that trying multiple tools in sequence might accomplish what was 
desired.  tar was simply an example suggestion of a place to start looking.

But, I would disagree that CVS already does effectively what tar 
does...  No, tar creates a single binary file for archive purposes. 
CVS does not do this.  Also, tar DOES handle directory information and 
can preserve owners, permissions and all other directory meta-info.  CVS 
does not do this.  tar DOES NOT handle versioning or history 
information.  CVS does do this.  I was suggesting that somehow combining 
the two tools it may be possible to create a system that did what he was 
looking for.

I've been lurking on the list for a very long time, and it seems to me 
that the one of the largest perceived deficiencies with CVS is it can 
not handle directory meta information (in other words, it can't version 
directories).  Perceived because some people consider this a 
deficiency while others consider it the right way.  Now, I'm not 
willing to debate if CVS is right or wrong in this, but it must be 
conceded that CVS doesn't do this, and as such may not be right for 
everyone.  I've never needed the functionality, so I don't have an 
opinion on it one way or another.

Regardless, it doesn't really matter.  CVS doesn't do as the poster 
wants.  There may be ways to handle it using CVS + some other standard 
Linux tools, or maybe the poster will just need to move on to another 
tool.

Also, if so many people NEED this functionality, why doesn't it get 
added to CVS?  If people only THINK they need it, then why don't we tell 
them how to do what it is they are actually trying to accomplish while 
using CVS?  Maybe this NEED is real, and maybe it's just marketing from 
commercial version control companies, but one way or another it gets 
asked for.  Giving people on this list the usual if it doesn't work for 
you, well #*@ you, go somewhere else rant seems counter-productive.

Perhaps if we all discuss it calmly and logically, we can find a way to 
give people what they want and remain true to the CVS-way.  Some of 
the stuff on this list lately is beginning to look like a religious war, 
instead of useful discussion.

Thanks,
- Steve
Greg A. Woods wrote:
[ On Tuesday, May 27, 2003 at 11:39:22 (-0700), Steve deRosier wrote: ]

Subject: Re: outsider's perspective

As you know, CVS doesn't version directories and frankly was never 
designed with that in mind (never mind the argument over if it should or 
should not, it simply doesn't).  But...there is a program that does 
record directory structure: tar.  Perhaps you could somehow use tar in 
conjunction w/ CVS to do what you want to do.


CVS already does effectively what tar does, and it already does it with
support for recording the addition and deletion of files temporally,
something which tar obviously cannot do.


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


Re: outsider's perspective

2003-05-27 Thread Kaz Kylheku
On Tue, 27 May 2003, Steve deRosier wrote:

 Also, if so many people NEED this functionality, why doesn't it get 
 added to CVS? 

One reason is that it doesn't have to be literally added into the CVS
program, but rather imposed on top of it. CVS can be used as a
subprocess in a version control system that has the functionality.
This is a legitimate way of creating a ``CVS II''. In fact, this
approach is better in many ways than hacking inside CVS.  Separate
processes provide fault isolation, and avoid forking the codebase. If
``CVS II'' has a bug that stems from CVS, you just upgrade CVS to the
bugfixed version. It's blackbox inheritance! CVS gives us the ``base
class'' which we ``override'' to the get ``CVS II'' behavior with
versioned directories, symbolic links, permissions, etc.

There are a few drawbacks. The command line interface sometimes is less
than ideal, and also systems impose limitations on its length, so the
``CVS II'' layer sometimes has to break up long command lines, turning
one logical CVS operation into multiple actual ones.  Another problem
is that the output of the CVS process sometimes has to be passed
through a text filter so that it makes sense at the ``CVS II'' level.
Doing the substitutions in CVS itself would mean altering its code.

``CVS II'' has already been written, and released almost 1.5 years ago,
but you see, it was unfortunately named ``Meta-CVS'', and so people
somehow don't see it as a proper sequel.  If the sequel to The Matrix
was called ``Riemann Sphere'', perhaps few would get it either.

Meta-CVS does directory structure versioning, and other things. but
it's not CVS II!  Why? Because it's not *called* CVS II, and besides,
it's not backward compatible.  Never mind that it uses CVS for
everything: branching, merging, diffing, annotating, viewing logs etc.
and that it's nearly command-for-command compatible. What it stores
in the CVS repository can't be grokked by CVS I clients. (Just like
ANSI C programs can't be grokked by KR compilers; are those programs
not written in C?)

Okay, so if this is not legitimate, let's hear a concrete plan about
how CVS can be extended to make a ``CVS II'' which is completely
backward compatible with CVS I clients, and works as well as Meta-CVS.
Better yet, let's see some code. It's not enough to propose alternative
ideas when the existing idea is already coded. The CVS mailing list has
seen more than a *decade* of idle discussions about this subject already.



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


Re: outsider's perspective

2003-05-27 Thread Greg A. Woods
[ On Tuesday, May 27, 2003 at 14:07:18 (-0700), Steve deRosier wrote: ]
 Subject: Re: outsider's perspective

 But, I would disagree that CVS already does effectively what tar 
 does...  No, tar creates a single binary file for archive purposes. 
 CVS does not do this.  Also, tar DOES handle directory information and 
 can preserve owners, permissions and all other directory meta-info.  CVS 
 does not do this.

No concurrent versioning system with a shared repository, and
particularly not one that can operate in a client/server mode, can ever
possibly make any use of ownership, nor even of most permissions bits.
Ownership information, and most permissions bits, MUST always be
specific to the client and it MUST NOT be dictated by the repository.

CVS does already partly handles the one permission bit that's meaninful
to copy from the repository, for what it's worth (almost nothing in
practice).

If people would learn two things then all this stupidity would disappear
in a puff of smke:  (1) CVS is a text file content change tracking tool, and
_only_ a text file content version tracking tool; (2) all these things
(file permissions, ownerships, symbolic and hard links, etc.) can far
FAR more elegantly, simply, and clearly be managed by a build script,
the source for which can be stored in CVS.

  tar DOES NOT handle versioning or history 
 information.  CVS does do this.  I was suggesting that somehow combining 
 the two tools it may be possible to create a system that did what he was 
 looking for.

How do you expect to meaninfully combine a tool that creates binary
files with CVS?!?!?!?

 Also, if so many people NEED this functionality, why doesn't it get 
 added to CVS?

Have you not been paying any attention to the rationales I and others
have given for why CVS is the way it is and why it doesn't do some
things?

-- 
Greg A. Woods

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


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


Re: outsider's perspective

2003-05-27 Thread Donald Sharp
On Tue, May 27, 2003 at 02:45:14PM -0700, Kaz Kylheku wrote:
 On Tue, 27 May 2003, Steve deRosier wrote:
 
  Also, if so many people NEED this functionality, why doesn't it get 
  added to CVS? 
 
 One reason is that it doesn't have to be literally added into the CVS
 program, but rather imposed on top of it. CVS can be used as a
 subprocess in a version control system that has the functionality.
 This is a legitimate way of creating a ``CVS II''. In fact, this
 approach is better in many ways than hacking inside CVS.  Separate
 processes provide fault isolation, and avoid forking the codebase. If
 ``CVS II'' has a bug that stems from CVS, you just upgrade CVS to the
 bugfixed version. It's blackbox inheritance! CVS gives us the ``base
 class'' which we ``override'' to the get ``CVS II'' behavior with
 versioned directories, symbolic links, permissions, etc.
 
 There are a few drawbacks. The command line interface sometimes is less
 than ideal, and also systems impose limitations on its length, so the
 ``CVS II'' layer sometimes has to break up long command lines, turning
 one logical CVS operation into multiple actual ones.  Another problem
 is that the output of the CVS process sometimes has to be passed
 through a text filter so that it makes sense at the ``CVS II'' level.
 Doing the substitutions in CVS itself would mean altering its code.
 
 ``CVS II'' has already been written, and released almost 1.5 years ago,
 but you see, it was unfortunately named ``Meta-CVS'', and so people
 somehow don't see it as a proper sequel.  If the sequel to The Matrix
 was called ``Riemann Sphere'', perhaps few would get it either.
 
 Meta-CVS does directory structure versioning, and other things. but
 it's not CVS II!  Why? Because it's not *called* CVS II, and besides,
 it's not backward compatible.  Never mind that it uses CVS for
 everything: branching, merging, diffing, annotating, viewing logs etc.
 and that it's nearly command-for-command compatible. What it stores
 in the CVS repository can't be grokked by CVS I clients. (Just like
 ANSI C programs can't be grokked by KR compilers; are those programs
 not written in C?)
 
 Okay, so if this is not legitimate, let's hear a concrete plan about
 how CVS can be extended to make a ``CVS II'' which is completely
 backward compatible with CVS I clients, and works as well as Meta-CVS.
 Better yet, let's see some code. It's not enough to propose alternative
 ideas when the existing idea is already coded. The CVS mailing list has
 seen more than a *decade* of idle discussions about this subject already.

In some respects I think this last paragraph is unfair.  I've seen
lots of different ideas over the last couple of years that get 
squashed loudly whenever they are brought up.  Why would people want
to contribute when there is no interest in changing cvs.  Or when
people do show interest they get yelled at for not doing it the
'pure cvs' way.   

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


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


Re: outsider's perspective

2003-05-27 Thread Steve deRosier
No concurrent versioning system with a shared repository, and
particularly not one that can operate in a client/server mode, can ever
possibly make any use of ownership, nor even of most permissions bits.
Ownership information, and most permissions bits, MUST always be
specific to the client and it MUST NOT be dictated by the repository.
Yes, this makes perfect sense, and I agree with you.  Frankly I'm not 
even sure what it is that various people are asking with keeping the 
other meta info.  But it seems that there are other bits (not as in 1s 
and 0s) of meta information that people want to keep about directories. 
 Are symbolic links kept and versioned by CVS?

If people would learn two things then all this stupidity would disappear
in a puff of smke:  (1) CVS is a text file content change tracking tool, and
_only_ a text file content version tracking tool; (2) all these things
(file permissions, ownerships, symbolic and hard links, etc.) can far
FAR more elegantly, simply, and clearly be managed by a build script,
the source for which can be stored in CVS.
Again, I agree with your point of (1).  Also, I think that a build 
script is a good way to handle things (but I've always been a huge fan 
of the power of make and use it for many things beyond just building my 
latest C/C++ projects).  But, what about large directory structures of a 
web site?  The directory information is meaningful.  And the person 
doing the maintaince can't always login as the psudouser the web server 
runs as.  And a build script isn't necessarilly meaningful in this 
context either.



tar DOES NOT handle versioning or history 
information.  CVS does do this.  I was suggesting that somehow combining 
the two tools it may be possible to create a system that did what he was 
looking for.


How do you expect to meaninfully combine a tool that creates binary
files with CVS?!?!?!?
Frankly, I felt that was an exercise for the reader.  But one idea (not 
necessarily the best idea or even a good idea) was the user could tar up 
the directory structure and put the tar archive into CVS (using the 
approprate -k flag of course).  I would think you'd want to separtely ci 
your text files that were in those directories though so the changes 
could be tracked better.  Perhaps not good and maybe not any better than 
just keeping a directory with date-munged-file-named tar files.  As I 
said, example and not a good idea.  :)

Again, the point was missed.  It was an example that by combining tools 
(using make or other build facility), the user could come up with 
something that would do what it was they were trying to do.  And as I 
recall, isn't that the whole point you've been trying to get across - 
use a build facility of some sort to do the parts that CVS doesn't do?



Also, if so many people NEED this functionality, why doesn't it get 
added to CVS?


Have you not been paying any attention to the rationales I and others
have given for why CVS is the way it is and why it doesn't do some
things?
Of course I have been.  Considering that the same song and dance has 
been done here regularly to avoid making meaningful improvments in CVS, 
I could hardly miss it.  Many of the rationales are perfectly valid, but 
sometimes it sounds like you (and others) are rationalizing out a reason 
it can't be done simply because you don't want it to be done.  I'm often 
guilty of the same thing :) , but maybe we should try to be honest with 
ourselves and try to come up with a VISION of what CVS should be and 
where it should go in the future.  These problems and questions won't 
stop simply because we rationalize that CVS was designed to solve this 
set of problems but not that set.

I agree that CVS is for versioning text files.  But there are many text 
files formats (XML, HTML, RTF and so on.  All are text files.).  And 
some of these do depend on directory structure to be meaningful.  And 
some of these are occasionally not handled properly by CVS if the 
reports on this list are any indication.

CVS is great, and it handles text files fine.  But putting arbitrary 
roadblocks in front of your users defeats the whole purpose.

- Steve



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


Re: outsider's perspective

2003-05-27 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

 No concurrent versioning system with a shared repository, and
 particularly not one that can operate in a client/server mode, can ever
 possibly make any use of ownership, nor even of most permissions bits.
 Ownership information, and most permissions bits, MUST always be
 specific to the client and it MUST NOT be dictated by the repository.

Yes, this makes perfect sense, and I agree with you.  Frankly I'm not 
even sure what it is that various people are asking with keeping the 
other meta info.  But it seems that there are other bits (not as in 1s 
and 0s) of meta information that people want to keep about directories. 

Metadata I can think of off the top of my head:
- Mapping to the history containers (RCS files) of its contents.
- Access controls (who can update, who can commit).
- Execute permissions.

CVS actually maintains all of this stuff in very primitive ways.  At one
time or another every one of them has been pointed out has being deficient
in CVS in some way.

  Are symbolic links kept and versioned by CVS?

Nope.  Arguments go both ways as to whether or not they should be.  I
personally believe they should not be (for portability reasons).

 If people would learn two things then all this stupidity would disappear
 in a puff of smke:  (1) CVS is a text file content change tracking tool, and
 _only_ a text file content version tracking tool; (2) all these things
 (file permissions, ownerships, symbolic and hard links, etc.) can far
 FAR more elegantly, simply, and clearly be managed by a build script,
 the source for which can be stored in CVS.

Again, I agree with your point of (1).  Also, I think that a build 
script is a good way to handle things (but I've always been a huge fan 
of the power of make and use it for many things beyond just building my 
latest C/C++ projects).  But, what about large directory structures of a 
web site?  The directory information is meaningful.  And the person 
doing the maintaince can't always login as the psudouser the web server 
runs as.  And a build script isn't necessarilly meaningful in this 
context either.

I agree that CVS *is* an ASCII text file version tracking tool.  I disagree
that it *must be* only an ASCII text file version tracking tool.  All it
needs to lift this restriction is to remove the hard-coded invocations of
diff and diff3 in the user interface, replacing them with a more general
tool that adapts to the data type.  I've already demonstrated that this can
be done by posting a patch to this forum on or around Sept. 18, 2001.

As for the rest:  There's a difference between building a project and
deploying it.  Sometimes a build procedure does both (e.g. with a make
install target).  Other procedures build a project in a way that it can
be tested and as a side effect produce data that drive the installation
(e.g. files that drive the creation of installable packages).  The
installers should solve the problems of permissions and access controls
on the deployed product.  Shops are usually receptive to building the
necessary infrastructure to have appropriate people run the installers
successfully.

 tar DOES NOT handle versioning or history 
information.  CVS does do this.  I was suggesting that somehow combining 
the two tools it may be possible to create a system that did what he was 
looking for.
 
 How do you expect to meaninfully combine a tool that creates binary
 files with CVS?!?!?!?

Frankly, I felt that was an exercise for the reader.  But one idea (not 
necessarily the best idea or even a good idea) was the user could tar up 
the directory structure and put the tar archive into CVS (using the 
approprate -k flag of course).  I would think you'd want to separtely ci 
your text files that were in those directories though so the changes 
could be tracked better.  Perhaps not good and maybe not any better than 
just keeping a directory with date-munged-file-named tar files.  As I 
said, example and not a good idea.  :)

I think that if you're going to tar up a bunch of files and store them in
CVS then you're probably better off just storing the files themselves.
There are exceptions, of course (NextStep being one of them).  And in these
cases, its appropriate to use merge tools tailored for tar files.  (Yes,
you can do 2- and 3-way diffs on tar files, and 2- and 3-way merges.  I
believe these can even be automated for interactive and non-interactive
use in the CVS way.)

Also, if so many people NEED this functionality, why doesn't it get 
added to CVS?
 
 Have you not been paying any attention to the rationales I and others
 have given for why CVS is the way it is and why it doesn't do some
 things?

Of course I have been.  Considering that the same song and dance has 
been done here regularly to avoid making meaningful improvments in CVS, 
I could hardly miss it.  Many of the rationales are perfectly valid, but 
sometimes it sounds like you (and others) are rationalizing out a reason 

Re: outsider's perspective

2003-05-27 Thread Greg A. Woods
[ On Tuesday, May 27, 2003 at 14:45:14 (-0700), Kaz Kylheku wrote: ]
 Subject: Re: outsider's perspective

 One reason is that it doesn't have to be literally added into the CVS
 program, but rather imposed on top of it. CVS can be used as a
 subprocess in a version control system that has the functionality.
 This is a legitimate way of creating a ``CVS II''.

Note that the CVS we're talking about these days _is_ literally called
``CVS-II''

The first CVS was implemented as a set of shell scripts.  See the paper.

-- 
Greg A. Woods

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


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