Reposturgeon Attacks Tokyo!

Well, er, no. Actually, it attacks CVS.

Yes, that’s right, the just-shipped reposurgeon 2.11 can now read – though not write – CVS repositories. To get it to do this, I got my lunch-hooks on a relatively old program called cvsps that assembles changesets out of CVS repositories for human inspection. I gave it a –fast-export reporting mode that emits a fast-import stream instead, so now CVS has a universal exporter that will talk to any version-control system that speaks import streams. Oh, yes, and I’m maintaining cvsps now too – applause to David Mansfield, who both did a very good job on that code and sees clearly that its original use case is obsolete and –fast-export is a better way forward.

Two substantial releases of different projects in a day is a fast pace even for me. cvsps-3.0 and reposurgeon-2.11; two great tastes that taste great together.

Fear the reposturgeon!

19 comments

  1. Can’t wait for “Reposturgeon loses its mind and writes out CVS repositories”

    I kid, I kid…

  2. @Craig

    It is taking me quite some time to stop laughing from that one. Dunno if it’s the Southpark face, the fact that New York is closer to the antipode of China than Tokyo, or the thought of what New York Fries in my local mall is utterly surrounded by.

  3. Y’know, it’s great that you’re doing this for software repositories, but wouldn’t it be even more delicious if you had a way to import software documentation formats into some sort of meta-format which would allow us to output the documentation as a man page, as HTML, as docbook, or as postscript??

  4. “the just-shipped reposurgeon 2.11 can now read – though not write – CVS repositories.”

    Since Eric is sane, I assume that he will not be adding CVS write-support to reposurgeon.

    1. >Since Eric is sane, I assume that he will not be adding CVS write-support to reposurgeon.

      I have not descended into gibbering lunacy, no.

  5. Hmm, I found an issue when running reposurgon against Gentoo’s cvs repository (apologies – I could find no trace of a bug reporting system for cvsps).

    cvs [update aborted]: no such directory `net-mail/mutt’
    CVS retrieval ‘cvs -Q up -r1.1 -p net-mail/mutt/mutt-1.2.5-1.ebuild >/tmp/filerAfyOI’ failed.
    …(1671.92 sec) done.
    reposurgeon: cvsps -x –fast-export repository export returned error.

    Indeed that cvs command does fail with that error when run manually. The issue is that the directory was removed (actually moved, but same thing as far as CVS is concerned).

    I ran into similar problems when parsing CVS. I found this command a bit more bulletproof:
    cvs -Q co -r1.1 -p gentoo-x86/net-mail/mutt/mutt-1.2.5-1.ebuild

    It does have to be run from above the module level of the repository (ie from one level higher, note the extra directory in the path). As far as I can tell that could work in all cases update works, but also when a directory was removed.

    Take it for whatever little it is worth. :) And thanks for creating a great tool…

  6. esr, your productivity sometimes amazes me.

    OT: Was curious if this is as prevalent in FLOSS as it is in in-house or closed software?

    What Compsci textbooks don’t tell you: Real world code sucks
    “To be precise: a tremendous amount of source code written for real applications is not merely less perfect than the simple examples seen in school β€” it’s outright terrible by any number of measures.”
    http://www.theregister.co.uk/2012/12/21/financial_software_disasters/

    1. >OT: Was curious if this is as prevalent in FLOSS as it is in in-house or closed software?

      Can’t say for sure, no hard statistical evidence. But here’s what my experience tells me:

      Open-source programmers are significantly more productive than people writing “in-house or closed software” – and reasons aren’t hard to find. They get to choose their problems and their tools. They don’t have to go to meetings unless they want to. Nobody is demoralizing them with artificial deadlines. I could go on…

      But. I’m an outlier – extremely productive even by my peers’ standards, so don’t try to estimate their performance en masse from my blog posts. Again, the reasons are not mysterious; I’ve been doing this for a long time and I’ve had enough practice to get good at it. If you believe the ten-years-to-mastery rule I was already a master two decades ago.

    1. >reposurgeon wants to use cvsps -x but you removed the option in it.

      Sorry. cvsps is a mess just now, I’m working as fast as I can to get it to a stable and good state, after which I will ship a point release of reposurgeon to sync up.

      Latest problem is, it turns out cvsps’s branch-assignment algorithm is broken. And has been for a while.

Leave a Reply to Jay Maynard Cancel reply

Your email address will not be published. Required fields are marked *