Life and code.
RSS icon Email icon Home icon
  • Subversion Dump File Splitter

    Posted on November 13th, 2005 Brian No comments

    I recently had to do some mangling of a dump of my personal Subversion repository. Basically, I had to modify some paths and revision copy numbers before re-importing to a clean repository. However, the dump was in one huge 300 MiB file, making it really difficult for to open for editing.

    Normally, the solution would simply be to re-dump the repository using the --revision option to the svnadmin dump command. Unfortunately, in a flash of stupidity, I deted my old repository before I had the new one working. So I wrote a little Perl script to split the dumpfile into seperate files.


    #!/usr/bin/perl

    open(REV, "> repo") || die("Unable to open $!");

    while (<>)
    {
    $line = $_;

    if (/^Revision-number\:\s+(\d+)$/) {
    open(REV, "> rev.$1") || die("Unable to open $!");

    if (!$header) {
    open(REPO, "< repo") || die("Unable to open $!");

    while () {
    $header = $header . $_;
    }
    }

    print REV $header;
    }

    print REV $line;
    }

    Ah…short and sweet, just the way a Perl script should be. Normally, I would immediately delete any Perl that I might happen to write, as I think the language is too flexible to be properly maintained over any length of time. However, since I can’t find anything else like this out on Teh Intarweb, I figure I’ll leave it here for posterity.