:) boreale$ cvs update -q cvs [update aborted]: -q or -Q must be specified before "update"
Translated: "I know what you're trying to do, but it's not the way I want it, so I'm going to make you retype the command." Not only that, it doesn't even give you something to cut and paste. Not only that, but it apparently can't tell if I typed -q or "-Q"! Stupid, stupid, stupid.
Not only that, but having gone through the entire cvs(1) manual page, I discover that there is no cvs subcommand (update is the subcommand there) that takes a -q, so the command is completely unambiguous with the -q following update, and it doesn't accept it anyhow. That goes beyond stupid to hostile.
It's worse: I want quiet mode when I update, but not when I commit. CVS has a .cvsrc file that you can set defaults in; the syntax consists of one line per subcommand, where the first word is the subcommand and everything following are the default arguments. Default global arguments use cvs as the subcommand. This makes it impossible to do this:
update -q
Instead you can only do
cvs -q
so that it affects all the subcommands. Otherwise you have to type
it in every time you want it (and in the right place!). Of course, the
fact that you can put cvs -q in that file at all is not
documented in the section of the manual ("CVS STARTUP FILE") that
explains the .cvsrc syntax. It's also not documented in
the FILES section, which helpfully explains again how to
use that file, identically to the previous explanation, right down
to omitting how to set global options.
Also: If you have the cvs(1) manual page handy, look and see how many places you have to look to read everything there is to know about what one subcommand -- say, update -- does. In mine, I counted four, each separated by pages of text, none of which tell you to read more below: in "ESSENTIAL COMMANDS", in "CVS COMMAND SUMMARY", in "COMMON COMMAND OPTIONS" (which is sorted by option, not by subcommand, so you have to do a text search through the whole section to find out what applies to update), and in "CVS COMMANDS". Some of you might think that "ESSENTIAL COMMANDS", "CVS COMMAND SUMMARY", and "CVS COMMANDS" do not seem to be particularly different. Some of you might be right.
Also, the section on cvs add tells you how to combine update properly with that subcommand, as does the section on commit, and part of the "FILES" and "ENVIRONMENT VARIABLES" sections talk about how to modify the behavior of update. In short, the only way you can find out exactly how update behaves is to at least skim the entire 23-page manual.
Stupid, hostile, and poorly documented. It must be open-source!
Additionally there is a special circle in hell for those of you who use this as an opportunity to advocate your favorite source code control system in comments.
annoyed
2003-10-10 01:28 pm (UTC)
a) download cvs source code
b) fix it for yourself or find out there's a reason for why it does that
c) stop whining
:D!!!
PATCHES WELCOME!!!1!one
2003-10-10 01:39 pm (UTC)
Re: PATCHES WELCOME!!!1!one
2003-10-10 01:40 pm (UTC)
and then maintain your own version of cvs, which will obviously be better (and free!, just like the open source one!)
Re: PATCHES WELCOME!!!1!one
2003-10-10 01:48 pm (UTC)
Re: PATCHES WELCOME!!!1!one
2003-10-10 01:50 pm (UTC)
You are not going to get this kind of honesty in commercial software documentation.
Re: PATCHES WELCOME!!!1!one
2003-10-10 08:24 pm (UTC)
2003-10-10 02:26 pm (UTC)
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version.Feel free to redestribute it as version 2.Of course, I know you won't, and with good reason. CVS is a complete and total sinkhole. AFAIK, nobody has ever gone into CVS to "fix" things and a) reversed any of the existing damage, b) come out willing and able to write any useful software that wasn't some completely different version control system.
2003-10-10 02:18 pm (UTC)
Sorry, couldn't resist.
Hurr
2003-10-10 02:37 pm (UTC)
Re: Hurr
2003-10-10 08:21 pm (UTC)
2003-10-10 03:48 pm (UTC)
Also, you can put different options for different commands in your .cvsrc file, right?
2003-10-10 08:31 pm (UTC)
Should I talk about large binary files and CVS? No? Ok.Well, yes, that's what I described in my post up there.
But you can't do what I complained about -- make only "update" quiet -- because you can only pass "-q" as a global option. If you could pass "-q" to a subcommand -- and since it's unique it's unambiguous and the only reason it doesn't work is because they didn't feel like it (strongly enough to make a specific error message for that condition). If I could put "update -q" in .cvsrc I would be a happy camper (in this regard -- this is not my only complaint about this particular source motel), but I can't.
2003-10-12 08:38 am (UTC)
Yeah, I noticed your .cvsrc later--I guess I did not read carefully enough at first. Sorry.
One of these days, I want to try Subversion. While I love being an early adopter, I am a little nervous about early-adopting an entire source control system...
2003-10-10 05:45 pm (UTC)
well let's see here then
2003-10-10 08:36 pm (UTC)
2003-10-11 12:07 am (UTC)
2003-10-11 09:30 am (UTC)
Besides, I have here to post :-)
You remind me
2003-10-11 01:58 am (UTC)
Because, y'know, who doesn't like getting responses that are answers to completely different questions?
THANKS FOR PLAYING!
More on topic than most responses so far
2003-10-11 05:12 pm (UTC)
ObOnTopic: uhh... CVS sucks. The Cederqvist book reveals some secrets, which tricks you into thinking that you're winning, but you're just losing less.
Re: More on topic than most responses so far
2003-10-11 09:06 pm (UTC)
And yes, not just beer but Quebecois beer (and mostly Unibroue at that)! My workstation is boreale,
2003-10-11 05:19 pm (UTC)