100 lines
2.8 KiB
Perl
Executable File
100 lines
2.8 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
# 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 5.10.1;
|
|
use strict;
|
|
use warnings;
|
|
|
|
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.
|