Log in

No account? Create an account
pinkie pie


Rich Lafferty's Journal

(mendelicious mendelusions)

Previous Entry Share Flag Next Entry
Stupid software tricks
   :) 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.

  • 1

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



<mendel:#perl> purl, patches welcome?
  <purl:#perl> (This is usually not true.)


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:
   Low-priority bugs go here.  Actually, most every documented bug is 
   "low-priority"--in the sense that if it is documented it means noone 
   has gotten around to fixing it.
   * If a ~/CVS/Root file exists on the server and you are using rsh to 
   connect to the server, CVS may loose [sic] its mind
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.


Holy cow, I'm starting to think you're not being ironic here.

    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.

You should try using CVS. It's my favorite source control versioning system.

Sorry, couldn't resist.

(Deleted comment)
Yeah no kidding. :-) I'm catching more than I would with a red wiggler!

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?

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.
Also, you can put different options for different commands in your .cvsrc file, right?
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.

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...

Do we get to be in an extra-spehshul circle of hell if we start spouting the advantages of Visual SourceSafe?

well let's see here then

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...

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 :-)

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?


More on topic than most responses so far

'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.

Re: More on topic than most responses so far

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, nyxie'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.

"Type cat | cc and get it right the first time."

  • 1