diff options
Diffstat (limited to 'migrate.pl')
-rwxr-xr-x | migrate.pl | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/migrate.pl b/migrate.pl new file mode 100755 index 0000000..de4265b --- /dev/null +++ b/migrate.pl @@ -0,0 +1,96 @@ +#!/usr/bin/perl -w +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +use strict; +use File::Basename; +BEGIN { chdir dirname($0); } +use lib qw(. lib); +use Bugzilla; +use Bugzilla::Migrate; + +use Getopt::Long; +use Pod::Usage; + +my %switch; +GetOptions(\%switch, 'help|h|?', 'from=s', 'verbose|v+', 'dry-run'); + +# Print the help message if that switch was selected or if --from +# wasn't specified. +if (!$switch{'from'} or $switch{'help'}) { + pod2usage({-exitval => 1}); +} + +my $migrator = Bugzilla::Migrate->load($switch{'from'}); +$migrator->verbose($switch{'verbose'}); +$migrator->dry_run($switch{'dry-run'}); +$migrator->check_requirements(); +$migrator->do_migration(); + +# Even if there's an error, we want to be sure that the serial values +# get reset properly. +END { + if ($migrator and $migrator->dry_run) { + my $dbh = Bugzilla->dbh; + if ($dbh->bz_in_transaction) { + $dbh->bz_rollback_transaction(); + } + $migrator->reset_serial_values(); + } +} + +__END__ + +=head1 NAME + +migrate.pl - A script to migrate from other bug-trackers to Bugzilla. + +=head1 SYNOPSIS + + ./migrate.pl --from=<tracker> [--verbose] [--dry-run] + + Migrates from another bug-tracker to Bugzilla. If you want + to upgrade Bugzilla, use checksetup.pl instead. + + Always test this on a backup copy of your database before + running it on your live Bugzilla. + +=head1 OPTIONS + +=over + +=item B<--from=tracker> + +Specifies what bug-tracker you're migrating from. To see what values +are valid, see the contents of the F<Bugzilla/Migrate/> directory. + +=item B<--dry-run> + +Don't modify the Bugzilla database at all, just test the import. +Note that this could cause significant slowdown and other strange effects +on a live Bugzilla, so only use it on a test instance. + +=item B<--verbose> + +If specified, this script will output extra debugging information +to STDERR. Specify multiple times (up to three) for more information. + +=back + +=head1 DESCRIPTION + +This script copies data from another bug-tracker into Bugzilla. It migrates +users, products, and bugs from the other bug-tracker into this Bugzilla, +without removing any of the data currently in this Bugzilla. + +Note that you will need enough space in your temporary directory to hold +the size of all attachments in your current bug-tracker. + +You may also need to increase the number of file handles a process is allowed +to hold open (as the migrator will create a file handle for each attachment +in your database). On Linux and simliar systems, you can do this as root +by typing C<ulimit -n 65535> before running your script. |