--- trunk/pgsql-git-backup.pl 2008/09/11 18:44:04 82 +++ trunk/pgsql-git-backup.pl 2008/09/11 20:22:49 86 @@ -8,16 +8,19 @@ use strict; use Getopt::Long; +use Fatal qw/:void open close mkdir chdir/; my $git = '/tmp/pgsql-git-backup/'; my $verbose = 0; my $database = ''; +my $repack = 1; my $usage = "Usage: $0 --database name < name-dump.sql\n"; GetOptions( - 'git=s' => \$git, + 'git=s' => \$git, 'database=s' => \$database, - 'verbose+' => \$verbose, + 'verbose+' => \$verbose, + 'repack' => \$repack, ) or die $usage; die $usage unless $database; @@ -26,25 +29,31 @@ my $name = $database; my $d; +sub git { + my $cmd = shift or die "no cmd?"; + system($cmd) == 0 or die "$cmd FAILED $?"; +} + sub write_chunk { - my $path = sprintf("%s/%02d%s.sql", $database, $nr++, $name); + my $path = sprintf("%s/%04d%s.sql", $database, $nr++, $name); open(my $fh, '>', $path) or die "can't open file $path: $!"; print $fh $d; close($fh); warn ">> $path ", -s $path, "\n" if $verbose; - system "git-add '$path'"; + git "git-add '$path'"; } -if ( ! -e $git ) { - mkdir $git or die "can't create $git: $!"; - chdir $git; - system 'git-init-db'; -} +mkdir $git if ! -e $git; + +chdir $git; +warn "## using $git\n" if $verbose; + +git 'git-init-db' if ! -e "$git/.git"; if ( ! -e $database ) { - mkdir $database or die "can't create $database: $!"; -# system "git-add '$database'"; -# system "git-commit -m 'added $database directory' $database"; + mkdir $database; +# git "git-add '$database'"; +# git "git-commit -m 'added $database directory' $database"; } while() { @@ -52,6 +61,7 @@ write_chunk; $name = " $1"; $name =~ s/\W+/ /g; + undef $d; $d = ''; } $d .= $_; @@ -59,4 +69,7 @@ write_chunk; -system "git-commit -m '$database' '$database'"; +git "git-commit -m '$database' '$database'"; + +git "git-repack" if $repack; +