:) 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.
23 responses to “Stupid software tricks”
“Install Subversion, problem solved.”
(please don’t really send me to hell. please. <3 mendel)
Grr. I know you’re joking but it will turn into a really annoying discussion if people start talking about their favorite revision control systems.
steps
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!!!
no, just patch it for you
and then maintain your own version of cvs, which will obviously be better (and free!, just like the open source one!)
Out of sheer curiosity you got me digging around in the cvs package documentation (answer to curiosity: GPL version 1, yow), and I found HACKING, which contains in part:
Somehow this was not reassuring.
And this is exactly why I like open source
You are not going to get this kind of honesty in commercial software documentation.
You should try using CVS. It’s my favorite source control versioning system.
Sorry, couldn’t resist.
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.
I find it alarming how many pedantic wank arguments you’re getting from people, considering that you are pro-open-source. Just because you’re for it though, doesn’t mean you’re for sloppiness and shit that just plain doesn’t work. =) Ah well. Also, having the right to discuss what you find frustrating seems to be fully within the purview of your own journal, or so one would think. ;)
I bought it at the bookstore, but there is a very nice Open Source book available: http://cvsbook.red-bean.com/
Also, you can put different options for different commands in your .cvsrc file, right?
Do we get to be in an extra-spehshul circle of hell if we start spouting the advantages of Visual SourceSafe?
Yeah no kidding. :-) I’m catching more than I would with a red wiggler!
Holy cow, I’m starting to think you’re not being ironic here.
I’m pretty familiar with CVS; that’s what we use to manage forked and locally-generated packages for our Linux distribution. It’s just stupid, hostile, and poorly documented. I don’t think you’ll find many people that use CVS heavily on a daily basis that wouldn’t agree with one or more of those descriptions occasionally. We’ve got a lot in CVS and some of the breakage we’ve experienced has been interesting, to say the least. (Fixing it is my problem.)
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.
I checked the rules, and it appears the “watched 12 hours of LOTR in one sitting” ring takes precedence anyhow. But I tried!
Methinks someone is ready for a post to the hates-software mailing list…
I was thinking about the fact that I have two tattoos and I’m now back living with my father, who only knows about one of them. Then I got to thinking of the different ways to state the above information (he doesn’t know about half of them, I have one he doesn’t know about, he only knows about one of them, etc.) and the different mental images you would construct from hearing that and not being privy to all of the information. I considered asking others what they thought about this, which led me to think of posting it to an LJ community. In the end, I didn’t do anything because I didn’t want to suffer through grammarpolice giving me shit about sentences ending with a preposition or linguaphiles saying something about it being a single-language question.
Because, y’know, who doesn’t like getting responses that are answers to completely different questions?
THANKS FOR PLAYING!
You want to start me on that too? :-) I get frustrated reading that because it’s as much advocacy and PEBCAK as it is broken software. I go read up every now and again but I don’t really plan on being a regular — that sort of advocacy is not much fun. (This sort is fun though.)
Besides, I have here to post :-)
‘boreale’ makes me nostalgic. Are all your hostnames different beers? Can you get that in Ottawa? It’s unheard-of here.
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.
“Type cat | cc and get it right the first time.”
You can get Boreale in Ottawa by driving to Hull! As far as I can tell it’s only available in Quebec.
And yes, not just beer but Quebecois beer (and mostly Unibroue at that)! My workstation is boreale, Candice‘s is quelquechose, my laptop is maudite, the firewall is griffon, the Mac is (Blanche de) chambly, the Qube that will be the mp3 player is bolduc, and the SS20 soon to be running a tape library is ephemere.
Oops, no. PLEASE don’t mention large binary files! Hey, why is this update over my DSL talking 5 minutes?
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…