Re: CVS newbie - I want to make a new CVS installation secure...

2004-05-19 Thread Steve deRosier

Flossie wrote:
snip...
2) I'm suprised how much CVS docs emphasise the fact that multiple users 
can check out the same file and CVS can resolve conflicts as checkins 
occur. However there are problems with letting users resolve conflicts 
(they can get it wrong), and I doubt a system can be 100% foolproof at 
deciding that an auto-merge is safe (in which case CVS can get it 
wrong), although the chances of error are very small.
There are other reasons, but basically, can I disable multiple checkouts?

3) Can I stop the general users from performing things like code 
branching? Stop them from removing files?

Are there any other tips on tightening up CVS security? Not security in 
the sense of SSH, etc, but once a user is 'in', limiting what they can do?

Good grief!  Might as well continue: Can we stop them from checking out files? Can we stop 
them from checking in files?  Can we stop them from editing files?  Can we stop them from 
getting any work done at all?  :)
Really, what on earth would you want to use CVS for?
1. You don't want to use concurent editing because you're concerned that merges might fail.  We used to have some 
developers at our site that were concerned about this.  A little education and all was better (I've never ever once 
seen or heard of any evidence of CVS screwing up a merge, every screwup I've ever seen was user error).  BTW, the 
C in CVS stands for Concurent.  This is the whole point of CVS over lock-based versioning systems.  
Don't want the C then use RCS, and the telephone: Hey Bob, I need to tweek one line in the file 
you've got checked out, can you check it in so I can actually get some work done?
2. You have hired developers for their skills, you're paying them money, and you trust 
them with your code base, but you don't trust them to take care of code conflicts?  Or 
managing source files? Come on...  If you don't trust them, why allow them to work on 
your code at all?  I'd get people that I felt were competent and I trusted in the 
first place.
3. Multiple checkouts... I hope you're not trying to disable one developer from 
checking out multiple files at once.  If you do, it will be near impossible for anyone 
to get any work done at all.
4. Branching is probably the most importaint feature of CVS (after merging of course).  Disabling this 
would cause every change, even temporary experimental changes, to have to be checked into the mainline 
stable codebase.  Which means that you don't any longer get version control for your 
experiments, or you make your stable codebase very unstable.
Examine your workflows carefully.  You'll find that one of the following is true:
1. A set of files in a commonly accessable directory is all you really want.  Result: 
you don't need CVS.
2. Your expectations of either your workflow or your users is wrong.  You can and 
should use the features that CVS gives you.  Result: educate yourself and use CVS the 
way it is intended.
3. Your expectations of the workflow or users is right.  You need a central repository 
and the feature set and phillosophy of CVS doesn't match your needs.  Result: don't 
use CVS; do some research and find the repostory system that is right for your needs.
CVS is not a one-size fits all sort of program.  It is excellent for people and groups that 
want and need its features and for workflows that match the CVS philosophy if you will.  There 
are tons of other code repository/source control/revision control systems out there, and if CVS doesn't 
map well to your needs, then you should fine one that does.  And CVS isn't even the only OSS one out there 
either, though in the long run you might find it cheaper to use the right tool for the job even if it 
costs you money.
CVS works well in our company.  We've had to adjust the habits of some of our 
developers, but after a while everyone settled down and started using it properly.  
But I recognize that it wouldn't work as well in all cases.  Do a little research and 
maybe you can find something that matches you better.
- Steve
___
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs


Re: Personal CVS repository?

2004-05-06 Thread Steve deRosier
In her place, what I would do is:
1. Keep two local workspaces.  One is the checkout from the remote repository, the other is the checkout from the local personal repository.
2. Do all my work in the local one, checking in as necessary.
3. When I release to the remote repository, I would copy all my changes to the remote workspace, run an update and fix any conflicts that the other site may have introduced, make and debug (again to deal with new stuff that the other side introduced), and then check into the new repository.
4.  copy all that back into my personal workspace and checkin (since there is new stuff from outside) to the personal cvs.  
5. Put a tag in my personal cvs to indicate this is the result of the merge with the remote cvs.

Really, I don't know any other decent way to do it.
editorial
However... this seems like a huge extra amount of effort and time.  I don't know why 
the supervisor is requiring such a thing, but in my opinion this seems like the real 
problem.  Perhaps he's there to make sure that no company specific IP goes into the 
OSS project?  I don't know, but such requirements (not the requirement to keep company 
IP out, the requirement to be checked) really kill the use of good revision control 
and collaboration with the external projects, and I'd say that the cost of such 
oversight really needs to be examined.  We contribute to OSS projects here at my 
company and no one looks them over.  We have NDAs and I feel that should be sufficient 
to keep company IP out of the OSS projects.  And besides, my supervisors wouldn't even 
know how to read the code let alone determine if any of our IP is in it (but we've got 
a really small engr dept.).
/editorial

Jim.Hyslop wrote:
MKlinke wrote:
In a simple single-authored project where she is trying to maintain a 
much more fine grained control over her revisions that what the 
official repository allows I'm not sure why she would even want to 
sync the repositories?  It seems a simple comment in her personal 
repository to the effect that At this point in development the code 
was released to the official repository should suffice.

(By snycing I'm assuming you mean make them identical in all 
respects including cvs assigned revision levels at some point in 
time )  

Given the assumption above, why do you feel syncing is important 
here?
Well, without any further input from Jill, we're both making assumptions
here. My assumption was that when she said:

I'll be the only programmer on this
project; moreover, my contribution will probably be pretty
self-contained (i.e. I don't expect that anyone but me will be
modifying the code that I write for this.)

I assumed she meant she would be the only programmer *at her company*
working on the project, but there could be other people from the open-source
project, who might make changes.
If Jill is the only person working on the code in any capacity, then a CVS
repository is overkill. The local, fine-grained control might be more easily
achieved by making a tarball (or Windows equivalent) when appropriate.
But if she's not, then the whole issue becomes more complex - she will have
to manage both her changes, and make sure to integrate the changes from the
main repository. This is what I meant by keeping the two in sync.

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


Re: CTRL-M and CTRL-J characters in files

2004-03-24 Thread Steve deRosier
The CVS client automatically handles the differences between Windows and UNIX line endings by converting the files when you do the checkout or update (or commit, or...).  So, as unintuitive as it sounds, uncheck this option.  Then you'll get the Windows line endings without those being imported into the repository.  To cleanup your current problem, I'd sugest have your Linux guys check out the files, run them through dos2unix until the files are cleaned up, check them in, and then you need to do an update or checkout without that box checked.

- Steve

prolist wrote:
I uses Windows 2000 machine and use Jcreator LE for my Java code. When I am
adding files to CVS using WinCVS client, somehow other memebers of team
using Linux machines are getting ^M^J in their files. Why is it happening
and moreover how can I get rid of this automatically while checking-in and
checking-out fiiles.
There is a settings in WinCVS preferences Global tab which has a checkbox
Checkout text files with the Unix LF (0xa) and I already have this
checkbox checked.
What should I do to avoid this problem?

Thanks!!!



___
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: CTRL-M and CTRL-J characters in files

2004-03-24 Thread Steve deRosier
The line ending conversion happens with every (relevant) command that cvs does.  Checkouts, commits, updates, exports, etc.  Different OSes use different line endings on text files.  CVS deals with text files, and so handles this very nicely. (but, see the earlier comment about the -kb flags)

- Steve

prolist wrote:
But, isn't that option only about checkouts, what about check-ins I
can't locate any poption specific to that.
Thanks!!!

- Original Message -
From: Steve deRosier [EMAIL PROTECTED]
To: prolist [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Thursday, March 25, 2004 1:01 AM
Subject: Re: CTRL-M and CTRL-J characters in files


The CVS client automatically handles the differences between Windows and
UNIX line endings by converting the files when you do the checkout or update
(or commit, or...).  So, as unintuitive as it sounds, uncheck this option.
Then you'll get the Windows line endings without those being imported into
the repository.  To cleanup your current problem, I'd sugest have your Linux
guys check out the files, run them through dos2unix until the files are
cleaned up, check them in, and then you need to do an update or checkout
without that box checked.
- Steve

prolist wrote:

I uses Windows 2000 machine and use Jcreator LE for my Java code. When I
am

adding files to CVS using WinCVS client, somehow other memebers of team
using Linux machines are getting ^M^J in their files. Why is it
happening

and moreover how can I get rid of this automatically while checking-in
and

checking-out fiiles.

There is a settings in WinCVS preferences Global tab which has a
checkbox

Checkout text files with the Unix LF (0xa) and I already have this
checkbox checked.
What should I do to avoid this problem?

Thanks!!!



___
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


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


Re: CVS on Samba

2004-01-28 Thread Steve deRosier
George,

Putting the repository itself on a networked drive (Samba or NFS or 
others) is generally not recommended.  Aparently there is a possiblity 
with data loss.  If you're running a server anyway, I'd just run CVS 
from the same server and do the checkouts and such via the client-server 
style of using CVS via SSH or RSH (or pserver, but you didn't hear ME 
sugest that ;) ).

We have a development server here that hosts both home directories 
mapped via Samba (for those silly people here still using Windows), and 
runs the CVS server.  Most people here actually keep their workspaces on 
the Samba'd home mount and use a local client to do checkouts from the 
CVS server.  So, the files in the workspace end up on the same machine 
as the CVS repository, but we always use client-server to make it 
happen.  Even when I work directly logged into the server via ssh, I use 
pserver to do my checkouts; This lets me use CVS the exact same way both 
locally and from my workstation via Samba.

This seems to work well for us.

- Steve

George Abraham wrote:
Has anyone tried creating a repository on a Samba mounted drive?. Please 
share your experiences, and points to be kept in mind while doing the same.

Regards,
George Abraham




___
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: A way to see who has checked out a module?

2004-01-13 Thread Steve deRosier
Again...  this isn't going to tell you much.  It basically gives you a 
log of certain activity with the system.  I can run the same command and 
I get the following results:
* I have 21 modules checked out.  Of those 21, I only have directories 
in my sandbox for 15 of those (where did those others go?  probably rm 
-r them at some point when I didn't need to work on them anymore)  Of 
the 15, I haven't touched 6 of them in close to a year, and in the last 
two months I've only even looked at 3.
* Someone who left the company almost 6 months ago has 8 modules checked 
out.
* One person only has 1 module checked out -- From March last year.
* No releases are ever done by anybody.

So, what info does cvs history -ao give you?  Basically that someone 
checked out a module for some reason at some point.  Does that give you 
the info you're looking for?  Maybe.  If so, I'd just setup a simple 
cron command:
'cvs history -ao  /var/www/html/cvscheckouts.txt'

But it doesn't tell me anything useful.

- Steve

Phil Labonte wrote:
But you can see who has checked out files and when via the command line 
so all I was looking for is something to add to apache... I guess I will 
have to write my own perl script for cgi

cvs -history -a -o shows all users and all checked out modules...

Greg A. Woods wrote:

[ On Tuesday, January 13, 2004 at 09:25:52 (-0500), Phil Labonte wrote: ]
 

Subject: Re: A way to see who has checked out a module?

I use ViewCVS as well but there is no option to see a log of checked 
out files is there? If there is can you let me know where?
  


Fundamentally there's really no such concept of checked out files in
CVS.  There is no file locking in CVS, so checked out does not mean
what I think you think it means.
Any number of people can have any number of working directories checked
out on any number of clients.
None of it really makes any difference to how anyone would know who's
really working on what.
CVS is not a replacement for good project management.

 



___
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: A way to see who has checked out a module?

2004-01-12 Thread Steve deRosier
viewcvs -
http://viewcvs.sourceforge.net/index.html
It's what we use and we love it.

- Steve

Phil Labonte wrote:
Is there a web add-on that we can use to see who has checked out a given 
module?

I know you can use the command line but I have some users that would 
like to see who has checked out a given module, and I do not want to 
give them shell access to the box.





___
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: cvs commit/up's change file ownership in working dir.

2004-01-06 Thread Steve deRosier
Scenario: N system admins. they checkout a machine's configuration into
their private working directory. they all are not currently root (or I'll
shoot them) and so the files are all owned by them with whatever default
mode per standard (umask etc) procedure. They do their edits, check them
into the repository. Now when a process on the host goes to the respository
to fetch it's new/updated configuration files the perms of these Read-only
checked out files had BETTER have the right perms on them or the processes
that read them will fall over and die.
AFIK, CVS really doesn't support this type of operation, and in fact it 
would probably break normal usage.  Perhaps some other versioning tool 
does, or you can use the various checkin hooks to modify the behavior.

If I was faced with this situation, I'd consider it a build issue. 
I'd have a make file in with these files, and my process (I'm assuming 
you've got some process that would be similar to a script running from 
cron?) would run a script that would do a checkout (as whatever user is 
aproprate, maybe give it a valid user with a home directory) or 
export, then run  make on the Makefile.  The Makefile would have 
whatever commands in it that are necessary to install the files:

.SUFFIXES: *.cf *.conf

.cf:
chown whoever $
chgrp wheel $
chmod 600 $
mv $ /etc/.
.conf:
chown whoever $
chgrp wheel $
chmod 600 $
mv $ /etc/.
This is only an example, write your own (not 100% if my syntax is 
correct even; security issues may be in above; check your permisions; 
etc...).

That's just how I'd do it if I was faced with the problem, but YMMV.

- Steve



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


Re: Read only access to cvs

2003-12-10 Thread Steve deRosier


Purushotham Komaravolu wrote:
Hi,
 I am new to CVS administration.I need help in seting up the following.
1) Read only access to repository:
Developers ger read/write 
access but QA and others get read-only access.
As an alternative, give developers real access to the repository with 
full read/write access, but install ViewCVS and only give the QA/others 
access to that.  If they only need to take a look at the code on 
occasion with no need to edit, why give them actual CVS access at all? 
Also, the deveopers will find that ViewCVS is handy anyway.

- Steve



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


Re: Please help..

2003-11-26 Thread Steve deRosier
David,

Perhaps John could try this?
A suggestion to untangle:
1. Create a repository properly.
2. Copy the .v.v files into the repository manually.
3. Checkout the files into a working directory. (getting a .v file)
4. Copy the .v files manually into the repository.
5. Checkout the files into a working directory. (hopefully getting back 
the originals.)

This assumes that the creating the repository over the original files 
didn't muck them up too much.

John,
Don't just try the above suggestion till we get more input.  I'm just 
floating an idea and I think the experts here might have something more 
to say about it.

Understanding how the repository is different from the working directory 
is crucial.  A few clif notes:
* You create a repository in an empty directory.  This repository is 
separate and very different from the data you actually work on.  In our 
case our repository is in /swdev/cvsroot.  This is what the CVSROOT 
environment variable is set to.
* You use ONLY cvs commands to get data into and out of the repository. 
 Ideally you'd never directly touch the repository data.
* You work in a separate working directory (off of your home directory 
probably, in my case /home/derosier/projects) and you check out your 
source code modules there.  When you've made some changes you want to 
check in, you do a 'cvs commit' command.
* Even if you run CVS locally, think of it as a server.  It's a black 
box where you store things.  You make requests to get data out, work on 
it, and then make a request to store data back in. From an OOP point of 
view: It is encapsulated data with a very well defined interface or API. 
 Use the interface, don't touch the data.
* If the above doesn't make sense to you, then read it again, read the 
CVS manual again until it makes sense.  Do not try to setup and use CVS 
without understanding this.

Hope this helps,
- Steve
David Wood wrote:
You need to spend some time with the manual, and/or the various tutorials 
on the subject. As you are discovering, if you're not understanding the 
manual, forging ahead anyway may not be the best decision.

A repository is a database (that holds its data in RCS files - ending in 
.v). You create a repository in an _empty_ directory, somewhere separate 
(with cvs init), and then you import sources into it from wherever you 
have them (with cvs import). 

Then you do a cvs checkout to create a new CVS working directory from the 
repository - and that is where you then do your work. (Often people will 
move or zip the original directory they imported from, and then move their 
CVS working directory into its place.)

You've created a repository right on top of where you are working, which 
is bad. I confess at this point I'm not sure what you've got in those 
files (perhaps someone wiser than myself can offer a shortcut?), but my 
best guess is that it will be easier to recover from backups than to 
reconstruct your sources from what's left of them now (.v.v files).

At any rate, since you have backups, there is no reason to panic. In the 
future, just put your repository somewhere separate (/home/cvs/repository 
?). And of course, have another go at the manual (or some of the other 
reading materials) to get a better handle on how the system works.

John Wards [EMAIL PROTECTED] wrote on 11/26/2003 12:25:42 PM:


On Wednesday 26 November 2003 4:57 pm, David Wood wrote:

First, did you work for 18 months on something without making backups?
Yes yes of course, but they are not with me currently and I am in a bit 
of a 

panic!


Second, to get help you will need to be much more specific about 
exactly

what you did when you figured out how to make a repository from your
original source files. How did you set everything up (CVSROOT, etc)? 
What

commands did you run? It sounds like you have some confusion about
repositories versus working directories and the import process. Did 
you

read the CVS manual before you started? I fear from your description
you've gone pretty far down the wrong way.
Yes I read the manual and I should have probably been a bit more 
detailed but 

I thought ah someone wil know an easy undo comand.seems not then :-(

I got a bit confused with all the CVSROOT stuff etc.

My source files are in /home/johnwards/www/sportnetwork

I thought I should have done this:

CVSROOT=/home/johnwards/www
export CVSROOT
cvs init
Then:
cvs import -m SportNetwork first import -d sportnetwork sportnetwork 
start

This was wrong :-( I think. As its changed all my files...

I am really confused by the manual...all I want to do is set up CVS 
using 

my source files...how on earth do you do it as I am really 
confused..

John







___
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: automatic checkout

2003-09-16 Thread Steve deRosier
How about a script on a cron job that periodically (whatever granularity 
you require from 1 minute to 1 day) checks to see if there's been any 
new updates and if so does an update to the production tree?  Seems 
like a rather clunky work-arround, but it should at least get the 
results you're looking for.

- Steve

Roderick Bloem wrote:
Hi,

I want to use cvs for a directory that contains scripts.  I don't want 
everyone to change the scripts in the directory: I won't have 
accountability.  Thus, it is under cvs.  People should check out, 
change, and submit.  I don't want them to write to the directory itself, 
because they will forget to check in.

I would like changes to propagate to the script directory immediately. 
Everytime someone commits, an update would be executed in the script 
directory.  Is that possible?

I have tried a loginfo script, but there is a problem with the locks: 
the cvs update runs when the commit has not released the lock yet.

I have looked on the web and found some references, but nothing very 
satisfactory.  I have seen ACU, but it seems more concerned with 
managing multiple machines (which is not a problem), than with the 
lock.  I have also thought about putting a pause into the script that 
does the update, but that does not seem very safe, not do I know how to 
do it.  (My shell programming is bad, and I don't know how to spawn a 
process from loginfo.)

Is there a good solution for this?  Should I consider a different setup?

Thanks,

Roderick Bloem



___
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: ViewCVS vs. CVSWeb with CVSNT

2003-08-10 Thread Steve deRosier
Yes, ViewCVS does those also.  One feature I love about it is the 
CVSGraph view.  You can choose to looke at a file's history in a 
graphical graph, with boxes to indicate each version, and it shows the 
branches graphically.  Clicking on any box will bring up the file as it 
was in that version; clicking between any box will bring up a colored 
diff between the two versions.

Of course, all the same info and links are available in text 
information also on a different page.  I just find the feature very useful.

It does also handle showing the module file list by tags and branches, 
but I've found the interface implmentation of that to be a bit clunky 
(it works well, but it's not always obvious what state you're in or how 
to change it to the one you want).

- Steve

JacobRhoden wrote:
On Fri, 8 Aug 2003 08:40 am, Steve deRosier wrote:

We use ViewCVS and we love it.  We use it for all sorts of things
including tracking the CVS repository and just viewing source files in
other projects (have you ever wanted a quick look or printout without
checking out the module and opening it in an editor?).  For best usage
though, it is good to have both enscript and CVSGraph.  We run it on a
Linux server, not NT. You can't grab/checkout a module over the web, but
you can grab the full source as a text file for a particular file
version.  Also, it's purely a viewer, there's no administrative
functions or other CVS functonality to it.


cvsweb does all those exact same things (: I dont know viewcvs but I am 
guessing they are fairly the same. One thing that wasnt mentined as being in 
ViewCVS but is in cvsweb, is that cvsweb can do diffs between versions of 
files either on revision numbers, dates or tags. And can view modules based 
on tag/branch. (: 

_
Jacob Rhoden - http://rhoden.id.au/


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


Re: ViewCVS vs. CVSWeb with CVSNT

2003-08-07 Thread Steve deRosier
We use ViewCVS and we love it.  We use it for all sorts of things 
including tracking the CVS repository and just viewing source files in 
other projects (have you ever wanted a quick look or printout without 
checking out the module and opening it in an editor?).  For best usage 
though, it is good to have both enscript and CVSGraph.  We run it on a 
Linux server, not NT. You can't grab/checkout a module over the web, but 
you can grab the full source as a text file for a particular file 
version.  Also, it's purely a viewer, there's no administrative 
functions or other CVS functonality to it.

I've never used or installed CVSWeb so I can't speak to that package.

I hope that helps some.
- Steve


Portabill wrote:
Hello all,

Which web server is better/preferred for web access to the CVS repository?
ViewCVS or CVSWeb?
Reasons?

I hope this doesn't start a religious war.

Thanks,

Bill



___
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: port not running!!!

2003-07-24 Thread Steve deRosier
If you're checking from an external box, don't forget to punch a hole in 
the server's firewall if one is running.  A firewall that we didn't 
realize was running on our RH box tripped us up for a couple of hours.

- Steve

Kent Emia wrote:
  port not running!!!

I ve checkec 
http://www.freeos.com/articles/4608/?PHPSESSID=a898a2e13956084daeb236798a405bad 
http://www.freeos.com/articles/4608/?PHPSESSID=a898a2e13956084daeb236798a405bad

and in the # 13 ^ th it says to check if the CVS is running on the port 
2401 but what if I can t see it? it doesn  t tell

what to do next  .

btw how do I do that?

Kent



___
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 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 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: pserver login problem to Linux from Win2k

2002-10-31 Thread Steve deRosier
Ok, got this figured out.  Just incase anyone wants to know:

I'm using a CVS binary from cvshome.org's download pages.  Specially the one
from:
http://www.cvshome.org/dev/codewindow.html

I did define the HOME environment variable and now it's creating the
.cvspass properly.

But still:

J:\projects\ORHwBringUpcvs ci -m mycvstry Makefile
cvs commit: in directory .:
cvs commit: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot
cvs commit: in directory .:
cvs commit: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot
cvs commit: in directory .:
cvs commit: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot

Here's what is happening:
1. J: is a networked drive connected to my home directory on our Linux
server via Samba
2. I started doing my work telneted into the server and got checkin and
checkouts working fine
3. CVS creates the directory CVS inside your workspace when you do your
checkout; it also creates the file Root in that directory set to your
CVSROOT where you got your files checked out from.  In my case this CVS/Root
looked like '/swdev/cvsroot'
4. I then tried to checkin some changes via CVS in a DOS box on my local
machine, with CVSROOT=:pserver:derosier@engswdev:/swdev/cvsroot
These failed with a message of:
cvs commit: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot

Reason: CVS stores your CVS Root in the file Root off of the subdirectory
CVS in you project's working directory.  It uses this file to determine
where the files should be checked back into, ignoring the actual CVSROOT
variable.  This is normally not a problem, but it is in the case where you
do the check out locally, then do the edits and try to check them in
remotely (since this is a samba network drive to my windows 2k machine)
using the pserver method.  In this case it fails because CVS/Root has the
wrong CVSROOT string.

New question:  Is there an easy way to fix this problem, so I can
transparently use CVS in the same working directory both remotely and
locally?

Basically, my current fix is to only use one method, ie only do my work
remotely using pserver.

Thanks,
- Steve

 -Original Message-
 From: Shankar Unni [mailto:shankar;cotagesoft.com]
 Sent: Wednesday, October 30, 2002 11:35 AM
 To: 'Steve deRosier'
 Subject: RE: pserver login problem to Linux from Win2k


 Looks like you should do these operations in a clean area.

 Also, which Windows CVS client are you using? The CVSNT client? Or the
 Cygwin CVS client? Try defining a HOME environment so that it has
 forward slashes instead of backslashes.  (set HOME=c:/).

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:info-cvs-admin;gnu.org] On Behalf
 Of Steve deRosier
 Sent: Wednesday, October 30, 2002 9:38 AM
 To: CVS Discussion List
 Subject: pserver login problem to Linux from Win2k


 I have a CVS repository on our Linux development server that I need to
 access from my Win2k box.  I can access that repository logged in
 locally on the sever via telnet, and I can also access it via WinCVS,
 but I need to be able to access it from the command line (trying
 psever).  CVS from the command line is complaining about my CVSROOT
 variable.  It's probably just a simple Win vs Unix syntax issue, but I
 need help.

 Version on the sever is CVS 1.11.1p1 and I just downloaded the binary
 for Win which is v1.11.2

 Sample of my session via a DOS window (CVSROOT is set as an environment
 variable to be ':pserver:derosier@engswdev:/swdev/cvsroot'):

 ---
 J:\projects\ORHwBringUpcvs ci -m cmdline test Makefile
 cvs commit: in directory .:
 cvs commit: ignoring CVS/Root because it specifies a non-existent
 repository /swdev/cvsroot cvs commit: in directory .: cvs commit:
 ignoring CVS/Root because it specifies a non-existent repository
 /swdev/cvsroot cvs commit: warning: failed to open C:\/.cvspass for
 reading: No such file or directory cvs commit: authorization failed:
 server engswdev rejected access to /swdev/cvsroot for user derosier cvs
 commit: used empty password; try cvs login with a real password

 J:\projects\ORHwBringUpset
 CVSROOT=:pserver:derosier@engswdev:/swdev/cvsroot

 J:\projects\ORHwBringUpecho %CVSROOT%
 :pserver:derosier@engswdev:/swdev/cvsroot

 J:\projects\ORHwBringUpcvs login
 cvs login: in directory .:
 cvs login: ignoring CVS/Root because it specifies a non-existent
 repository /swdev/cvsroot Logging in to
 :pserver:derosier@engswdev:2401/swdev/cvsroot
 CVS password:
 cvs login: warning: failed to open C:\/.cvspass for reading: No such
 file or directory

 

 BTW--engswdev properly resolves to the IP of the server as it is set in
 my hosts file.

 Any ideas would be great.

 Thanks,
 - Steve

 --
 Steve deRosier
 PianoDisc Design Engineer
 (916) 567- ext. 175
 www.pianodisc.com
 [EMAIL PROTECTED]



 ___
 Info-cvs mailing list
 [EMAIL PROTECTED]
 http

RE: pserver login problem to Linux from Win2k

2002-10-31 Thread Steve deRosier
Well, I don't know that I can't do that, considering that it works just
great for me.  Though the editor that I'm using on my Win2k box (SNiFF+)
understands UNIX line endings and has an option to save as Win/DOS, Mac, or
UNIX line endings (which is of course what I have selected).  So my code
files get edited properly.

I assume that the client CVS program actually contacts the server CVS
program when a checkout or checkin is done.  So...presumably it is the
server CVS that handles the writing of the administrative files, so I would
assume the integrity of the line endings would stay intact (UNIX style).  Am
I assuming too much?

Unfortunately the two-sandbox thing doesn't work with the tools I'm using.
But since I seem to be perfectly functional if I choose to do one or the
other (local or remote), but not both, things workout fine.  I just wanted
to know if there was a way I could do both (have my cake and eat it too).
See...the other two people in my development team will only use Win2k but as
I'm very much a Linux person I'd rather have the option of doing both.  But
if not, oh well.

The biggest problem was that I tried getting each piece up and running
independently first than tried to get them to work together.  Usually is a
great idea to make sure two parts work by themselves first.  Who knew? :)

- Steve


 -Original Message-
 From: Kaz Kylheku [mailto:kaz;footprints.net]On Behalf Of Kaz Kylheku
 Sent: Thursday, October 31, 2002 4:12 PM
 To: Steve deRosier
 Cc: Shankar Unni; CVS Discussion List
 Subject: Re: pserver login problem to Linux from Win2k


 On Thu, 31 Oct 2002, Steve deRosier wrote:

  Here's what is happening:
  1. J: is a networked drive connected to my home directory on our Linux
  server via Samba

 You can't do that, because Linux and Windows don't agree on the
 representation of text files.  This affects the treatment of text
 documents on update and commit, and also the representation of the CVS/
 administrative files.

 So even if you solve the location non-transparency problem by using
 a CVSROOT that works everywhere, you still have this problem.

  New question:  Is there an easy way to fix this problem, so I can
  transparently use CVS in the same working directory both remotely and
  locally?

 You can simply maintain two separate sandboxes.  To propagate changes
 from one to the other, commit in one, and update in the other.




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



pserver login problem to Linux from Win2k

2002-10-30 Thread Steve deRosier
I have a CVS repository on our Linux development server that I need to
access from my Win2k box.  I can access that repository logged in locally on
the sever via telnet, and I can also access it via WinCVS, but I need to be
able to access it from the command line (trying psever).  CVS from the
command line is complaining about my CVSROOT variable.  It's probably just a
simple Win vs Unix syntax issue, but I need help.

Version on the sever is CVS 1.11.1p1 and I just downloaded the binary for
Win which is v1.11.2

Sample of my session via a DOS window (CVSROOT is set as an environment
variable to be ':pserver:derosier@engswdev:/swdev/cvsroot'):

---
J:\projects\ORHwBringUpcvs ci -m cmdline test Makefile
cvs commit: in directory .:
cvs commit: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot
cvs commit: in directory .:
cvs commit: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot
cvs commit: warning: failed to open C:\/.cvspass for reading: No such file
or directory
cvs commit: authorization failed: server engswdev rejected access to
/swdev/cvsroot for user derosier
cvs commit: used empty password; try cvs login with a real password

J:\projects\ORHwBringUpset
CVSROOT=:pserver:derosier@engswdev:/swdev/cvsroot

J:\projects\ORHwBringUpecho %CVSROOT%
:pserver:derosier@engswdev:/swdev/cvsroot

J:\projects\ORHwBringUpcvs login
cvs login: in directory .:
cvs login: ignoring CVS/Root because it specifies a non-existent repository
/swdev/cvsroot
Logging in to :pserver:derosier@engswdev:2401/swdev/cvsroot
CVS password:
cvs login: warning: failed to open C:\/.cvspass for reading: No such file or
directory



BTW--engswdev properly resolves to the IP of the server as it is set in my
hosts file.

Any ideas would be great.

Thanks,
- Steve

--
Steve deRosier
PianoDisc Design Engineer
(916) 567- ext. 175
www.pianodisc.com
[EMAIL PROTECTED]



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