CVS Infrastructure 173
LiquidPC writes: "ONLamp.com has an article on FreeBSD's CVSup servers, which includes hints and guidelines on using CVSup. Also, advice from John Polstra, designer of CVSup."
"Oh what wouldn't I give to be spat at in the face..." -- a prisoner in "Life of Brian"
Lots of common sense stuff from the article... (Score:1)
The article largely boils down to common sense tips, so I'm not sure why this is newsworthy. Is it really newsworthy to know that if there is a mirror, consider moving at least part of your load to that mirror?
Still, some good common sense information can be found, and the article is worth a read.
cvsup good, cvs baaaaaad (Score:2)
unfortunately it's still ultimately based on the highly excreble CVS, which still can't handle something as simple as a renamed file, to say nothing of the hell it puts you through for directories. If McVoy would stop playing silly license games with Bitkeeper so he can try to become the next Sourceforge (sorry, but you lost), then the world would probably beat a path to his door.
In the meantime, are there any robust and free alternatives to cvs?
Re:cvsup good, cvs baaaaaad (Score:2)
Granted, it is missing a few important features such as the ability to flags files as having no revision history (so that large binaries can be stored without killing the server on commits and updates) and the ability to rename files and directories. But those are relatively minor complaints compared to all that it does do well.
The project I'm excited about is Subversion [tigris.org].
Re:cvsup good, cvs baaaaaad (Score:2)
The best feature was atomic commits, so you could look through the changelog for the repository as a whole rather than having to do it for individual files. Being able to see "Fixed bug foo - affected foo1.c, foo2.c, foo3.c" and "Fixed bug bar - affected foo1.c, bar1.c, bar2.c" was much easier than with CVS (where you get individual change logs for foo1.c, foo2.c, foo3.c, bar1.c, and bar2.c and have to cross-reference yourself to find out what files a particular bug-fix touched).
Perforce is quite expensive, but a two client license is free so it's worth checking out. Definitely looks like it has potential - it supports atomic commits as well.
-dair
Re:cvsup good, cvs baaaaaad (Score:1)
As an example, we mail commits to a mailing list and store them in a linear log (as you suggest). CVS has the hooks, and writing a quick perl script to do the things you need really are quite simple. Umm.. if your using cvs the assumption is you can code anyway
HINT: Look at the CVSROOT/loginfo file for that kind of thing. It even has the example you're looking for in it.
Linux (Score:1)
My name's Ed sweetman and I'm a pig fucking idiot
CVS bad? (Score:3, Insightful)
CVS may have its flaws, but they are relatively minor compared to most of the competition. Sure, you can't rename/move things conveniently, which is irritating, but how often do you want to do that in reality? Not very, surely. Given the technical complications with moving a file (which might be branched, and so on) I can live with this.
We switched to CVS some time ago at work, when we needed our MLOC project source base to be accessible to people working from home or clients' sites. So far, it's proved pretty successful. We're prepared to sacrifice a couple of little things in exchange for a robust mechanism for remote file access and a decent set of tools for integrating changes from many people.
I should note that we also use WinCVS [cvsgui.org], which does make certain tasks easier. For example, you can do an atomic commit of multiple files from all over the source tree easily this way, much more easily than from the command line. Most of the awkward things about CVS are handled by using a decent GUI on top of it, in our experience.
Re:CVS bad? (Score:2)
CVS has a number of flaws, yes, but I still use it in preferance to any other SCC I've tried. Unfortunately CVS development seems to be a bit stale, at least in terms of innovation. There are a couple of improvements that could really improve CVS a lot.
Things We'd Like To See(TM):
They can be useful, and lots of people go wild about them.
For those who have used Visual Sourcesafe you'll understand - you don't have to check out a project; you can "root" your checkout at any point in the tree. You "projects" (modules) can also be classified in a hierarchy, instead of being a list in the modules file.
Code reuse is important in many environments, and often a file needs to be reused across several projects, without being a completely separate library. Several SCCs can link files across projects, including VSS. While I'm sure you can fiddle the server (on Unix systems) with ln, there is no CVS-provided means (via the client) for linking files.
This happens more often than people care to admit. Its easy on the server, but you can't do it from the client without deleting and adding, which means you lose the history (which is what SCC is all about).
This is very pertinent to the use of CVSup (at least, it was last time I tried - haven't used distributed repositories in about a year). Although you can check out from a slave repository, you have to check in to the master. This means that you have to use -d on every checkin to specify the master. CVS needs a built-in mechanism to tell it where to check-out, and where to check-in.
One of my pet peeves, since I have to work in a commercial environment. I need easy, reliable backup. With CVS, I have to write a script to do this for me, and consider the locking of directories, etc. Since I'm one of the few people in the company with Unix knowledge, this puts CVS on the "dangerous because of maintenance" list, and makes it unpopular.
CVS over SSH is nifty and solves the security problem, but its certainly not easy, especially to set up as a server, and especially if you are trying to run your server under NT! CVS needs a built-in secure transport layer (say, SSL) either as a default or as an option.
Well, thats my 2c.
Re:cvsup good, cvs baaaaaad (Score:2)
Take a look at Aegis. It supports quite a few nice things CVS does not, such as atomic commits, and changes are handled as "change sets" - so a fix that touches multiple files can be applied and backed out in one step.
It has been around for quite a while, and looks fairly mature. I haven't used it yet, but I'm reviewing it now for future use.
http://www.pcug.org.au/~millerp/aegis/aegis.html
Re:cvsup good, cvs baaaaaad (Score:3, Interesting)
CVS has some big flaws, but it is quite nice. I haven't seen a source code control system that didn't have problems. Anyway I think you should look at subversion [tigris.org] they are directly addressing CVSs big flaws. It looks like the authors know a lot about CVS, and like CVS, so whatever they build will probably not suck more then CVS...
...except they have a lot of dependence on Apache and the DAV module. So that part at least sucks differently then CVS, and maybe more. Hopefully subversion will get far enough along that I can find out for myself though.
Bitkeeper does look cool. I don't think subversion can do the same sort of hierarchy of repositories that bitkeeper can. Anyway I don't think McVoy wants to be the next SourceForge (are they making money?), he want to be the next PerForce, CodeSafe, or whoever else has made a ton of money directly off version control software.
No, unless by "robust" you really mean "alpha quality, not trusted to be self hosting yet". Try again in six months :-)
Re:cvsup good, cvs baaaaaad (Score:2)
Re:cvsup good, cvs baaaaaad (Score:2)
It never fails. Ask for advice, and at least one person tells me to do it my damn self. Clue check, this particular little advocacy tactic is really counterproductive. If you can't answer the damn question, keep your righteous cheerleading to yourself, ok?
Re:cvsup good, cvs baaaaaad (Score:2)
If you are willing to do neither then shut the fuck up we have better things to do then to listen you bitch and moan.
Re:cvsup good, cvs baaaaaad (Score:1)
Personally I use CVS for ASIC development and am pretty happy with it. We use tools on Solaris, Linux, and Windows 2000 in the course of developing and verifying ASICs and it's nice to have a tool that works well on all of the above. You should see the mess that a lot of hardware engineers create...
load balancing (Score:1)
Re:load balancing (Score:2)
Because it would be killer for bandwidth. A better solution would be to put smart (ish) selection of mirrors into the client. Unforunately it's written in Modula-3, so you won't see me hacking around with it in the near future.
Dave
Auto upgrades (Score:1)
Re:Auto upgrades (Score:1)
I am working on the Linux HA [linux-ha.org] Procject by porting it to FreeBSD (and helping out with Solaris as well)... and I need to keep my system totally up to date.
Re:Auto upgrades (Score:1)
Re:Auto upgrades (Score:1)
I have suspicions that some people dont even realize they have these said cron jobs still running
Re:Auto upgrades (Score:1)
Re:Auto upgrades (Score:2)
That would be a very bad idea. Stable is a relative term. Subscribe to the freebsd-stable mailing list for a while and you will see what I mean. Stable is more stable that current, but it is still a moving target with occasional glitches and bugs. Stick to the release versions if you want to be conservative. Even then, you need to test a new release before using it for mission critical functions.
The inmates are truly running the asylum now... (Score:1)
ex debian user can vouch for cvsup (Score:1)
Check it out. Also peruse the BSD lisence.
The only reason I'd go back to Debian is convincing the pointy haired boss at work. FreeBSD is such a great OS, but no publicity. Wish I could get some servers up at work
cheers
Re:ex debian user can vouch for cvsup (Score:1)
My complaint with CVSup (Score:1)
Moreover, the GUI for the client is just *ugly*. It's this really bad pink colorscheme with Motif style widgets.
The software works really well as far as doing updates quickly and in a minimum of network traffic, but it's completely beyond me why the default client is GUI only. I've also searched for commandline tools but have yet to find anything, anyone know if such a beast exists?
Re:My complaint with CVSup (Score:3, Informative)
does the trick on my system.
The -g switch disables the GUI.
Re:My complaint with CVSup (Score:1)
SUP_UPDATE= yes
SUP=
SUPFLAGS= -g -L 2
SUPHOST= cvsup11.freebsd.org
SUPFILE=
PORTSSUPFILE=
DOCSUPFILE=
and type "make update" in the
It will update everything in one fell swoop src, ports, and doc.
Re:My complaint with CVSup (Score:1)
You can either pass cvsup the -g flag as anothre poster noted, or just not have your DISPLAY environment variable set. This is not obscure knowledge... it is clearly documented in the man page and various tutorials.
Moreover, the GUI for the client is just *ugly*. It's this really bad pink colorscheme with Motif style widgets.
Umm... it uses TCL/TK IIRC.
CVSup GUI (Score:2)
Huh? (Score:1)
Um, what's a "second hand"?
RSLEEP(1), for distributing requests over time. (Score:2)
I first ran into this at $VERY_LARGE_CORP where every machine was built off a standard image, which included a cron job to synchronize the clock with the master NTP server every hour, on the hour- which meant that precisely on the hour, the NTP server got slammed with hundreds of requests for the time.
I'm not sure why nobody has adopted my solution to the problem of ensuring that all the hosts do not hit the server exactly on the hour- the 'rsleep' command.
RSLEEP(1) MSG.Net General Commands Manual RSLEEP(1)
NAME
rsleep - suspend execution for a random interval of time
SYNOPSIS
rsleep seconds
DESCRIPTION
The rsleep command suspends execution for a minimum of 1 second, and as many as seconds.
Primarily useful for scheduling cron jobs to introduce some 'jitter' in the timing of requests from numerous clients all built off the same image, for example:
Credits
This incarnation of rsleep was first implemented by MSG.Net in 1994 as a 'ksh' script.
CVS on Mac OS X? (Score:2)
When I use Project Builder, the capability to use CVS is dimmed out. I checked in Terminal.app and cvs is installed and working correctly. (cvs -h works) How do I configure it to setup to connect to a CVS server and corresponding project so that I can commit my sources?
Thanks for all your help. Have a good morning!
Pat
Re:CVS on Mac OS X? (Score:2)
Same way you normally would? Check out an existing project with "cvs -d user@server:/path/to/cvsroot get projectname"
It works for me under OS X at least. Try reading the CVS FAQ for help. Or any CVS FAQ google turns up.
Setting up your own repository is a bit harder. One way around that is to open source your project and have SourceForge set up a repository for you. You get free off site backups that way :-)
Re:CVS on Mac OS X? (Score:2)
More specifically, I was looking at how I can use ProjectBuilder.app's CVS integration. It has a whole menu for revision control and it is supposed to be integrated with ProjectBuilder. I'd like to use it to commit my changes to an upstream CVS server, is it looking for an environment variable to be set or something?
Thanks for your help.
-Pat
Re:CVS on Mac OS X? (Score:2)
The help files claim the CVS stuff works if you are working on a project already under CVS. So i guess checking whatever your working on in, and out again should make that stuff work.
I have never tried it though, I didn't even realize it was there. Using a GUI to write and manage code is still new to me :-)
(well, to be honest I used a crappy on on the Atari ST where I first learned C...)
Re:CVS on Mac OS X? (Score:1)
CVSROOT=pserver:user@server:/path/to/CVSROOT
You should then be able to use ProjectBuilder to check out your project.
modula-3 is x86 only (Score:1)
BSDs should develop a truly free compiler (Score:2)
Although a decent C++ compiler will take about 10 man years to finish.
Plus C++ Standard library.
Plus linker, assembler and debugger.
On the other hand if one doesn't start with it, it probably won't take off ever.
Anyone mad enough and seriously interested in that task should drop me a mail.
Regards,
Marc
Re:BSDs should develop a truly free CVS equivalent (Score:2, Interesting)
I don't disagree. GCC also poses another threat: it is wiping out virtually all alternatives. A monoculture is not a good thing, and so for this reason alone a BSD-licensed alternative should be developed.
I'd just like to say.... (Score:1)