110 lines
3.3 KiB
Perl
110 lines
3.3 KiB
Perl
|
#!/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 <mkanat@bugzilla.org>
|
||
|
|
||
|
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.
|