#!/usr/bin/perl # ------------------------------------------------------------------------------ # (C) Crown copyright Met Office. All rights reserved. # For further details please refer to the file COPYRIGHT.txt # which you should have received as part of this distribution. # ------------------------------------------------------------------------------ use strict; use warnings; use FindBin; use lib "$FindBin::Bin/../lib"; use FCM::Admin::System qw{ filter_projects get_projects_from_svn_backup recover_svn_repository }; use FCM::Admin::Util qw{option2config}; use Getopt::Long qw{GetOptions}; use Pod::Usage qw{pod2usage}; main(); sub main { my %option; my $result = GetOptions( \%option, q{help|usage|h}, q{no-recover-dumps}, q{no-recover-hooks}, q{svn-backup-dir=s}, q{svn-dump-dir=s}, q{svn-hook-dir=s}, q{svn-live-dir=s}, q{svn-project-suffix=s}, ); if (!$result) { pod2usage(1); } if (exists($option{help})) { pod2usage(q{-verbose} => 1); } option2config(\%option); my @projects = filter_projects([get_projects_from_svn_backup()], \@ARGV); for my $project (@projects) { recover_svn_repository( $project, !$option{q{no-recover-dumps}}, !$option{q{no-recover-hooks}}, ); } } __END__ =head1 NAME fcm-recover-svn-repos =head1 SYNOPSIS fcm-recover-svn-repos [OPTIONS] [PROJECT ...] =head1 OPTIONS =over 4 =item --help, -h, --usage Prints help and exits. =item --no-recover-dumps If this option is specified, the program will not attempt to load the revision dumps of each repository after it has been restored from the backup. =item --no-recover-hooks If this option is specified, the program will not attempt to reinstate the hook scripts for each repository after it has been restored from the backup. =item --svn-backup-dir=DIR Specifies the root location of the backup directory. See L for the current default. =item --svn-dump-dir=DIR Specifies the root location of the directory where revision dumps are kept. See L for the current default. =item --svn-hook-dir=DIR Specifies the root location of the directory containing the source files of the hook scripts. See L for the current default. =item --svn-live-dir=DIR Specifies the root location of the live directory. See L for the current default. =item --svn-project-suffix=NAME Specifies the suffix added to the project name. The default is "_svn". =back =head1 ARGUMENTS =over 4 =item PROJECT Specifies one or more project to recover. If no project is specified, the program searches the backup directory for projects to recover. =back =head1 DESCRIPTION This program archives Subversion repositories in the live directory to the backup directory. =head1 COPYRIGHT E<169> Crown copyright Met Office. All rights reserved. =cut