From 4adf7f1b401955a1938cfc7a9decdc77af2fab20 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Sat, 24 Oct 2009 05:30:14 +0000 Subject: Bug 519584: Implement a framework for migrating from other bug-trackers, and start with a GNATS importer. Patch by Max Kanat-Alexander (module owner) a=mkanat --- migrate.pl | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 migrate.pl (limited to 'migrate.pl') diff --git a/migrate.pl b/migrate.pl new file mode 100644 index 000000000..df6b833a0 --- /dev/null +++ b/migrate.pl @@ -0,0 +1,110 @@ +#!/usr/bin/perl -w +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is The Bugzilla Migration Tool. +# +# The Initial Developer of the Original Code is Lambda Research +# Corporation. Portions created by the Initial Developer are Copyright +# (C) 2009 the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander + +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= [--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 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 before running your script. \ No newline at end of file -- cgit v1.2.3-24-g4f1b