diff options
Diffstat (limited to 'contrib/reorg-tools/move_dupes_to_invalid.pl')
-rwxr-xr-x | contrib/reorg-tools/move_dupes_to_invalid.pl | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/contrib/reorg-tools/move_dupes_to_invalid.pl b/contrib/reorg-tools/move_dupes_to_invalid.pl deleted file mode 100755 index 25106ce9c..000000000 --- a/contrib/reorg-tools/move_dupes_to_invalid.pl +++ /dev/null @@ -1,101 +0,0 @@ -#!/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 strict; -use warnings; - -use FindBin '$RealBin'; -use lib "$RealBin/../..", "$RealBin/../../lib"; - -use Bugzilla; -use Bugzilla::User; -use Bugzilla::Constants; -use Bugzilla::Util qw(detaint_natural); -use Bugzilla::Install::Util qw(indicate_progress); - -use Pod::Usage; - -BEGIN { Bugzilla->extensions(); } - -Bugzilla->usage_mode(USAGE_MODE_CMDLINE); - -pod2usage(1) unless @ARGV; - -my $dbh = Bugzilla->dbh; - -# Allow nobody@mozilla.org to edit bugs -my $user = Bugzilla::User->check({ name => 'nobody@mozilla.org' }); -Bugzilla->set_user($user); -$user->{'groups'} = [ Bugzilla::Group->new({ name => 'editbugs' }) ]; - -my $timestamp = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); - -foreach my $dupe_of_bug (@ARGV) { - detaint_natural($dupe_of_bug) || pod2usage(1); - my $duped_bugs = $dbh->selectcol_arrayref(" - SELECT DISTINCT dupe FROM duplicates WHERE dupe_of = ?", - undef, $dupe_of_bug); - my $bug_count = @$duped_bugs; - - die "There are no duplicate bugs to move for bug $dupe_of_bug.\n" - if $bug_count == 0; - - print STDERR <<EOF; -Moving $bug_count duplicate bugs from bug $dupe_of_bug to the 'Invalid Bugs' product. - -Press <Ctrl-C> to stop or <Enter> to continue... -EOF - getc(); - - $dbh->bz_start_transaction; - my $count = 0; - foreach my $duped_bug_id (@$duped_bugs) { - # Change product to "Invalid Bugs" and component to "General" - # Change resolution to "INVALID" instead of duplicate - # Change version to "unspecified" and milestone to "---" - # Reset assignee to default - # Reset QA contact to default - my $bug_obj = Bugzilla::Bug->new($duped_bug_id); - my $params = { - product => 'Invalid Bugs', - component => 'General', - resolution => 'INVALID', - version => 'unspecified', - target_milestone => '---', - reset_assigned_to => 1, - reset_qa_contact => 1 - }; - $params->{bug_status} = 'RESOLVED' if $bug_obj->status->is_open; - $bug_obj->set_all($params); - $bug_obj->update($timestamp); - - $dbh->do("UPDATE bugs SET delta_ts = ?, lastdiffed = ? WHERE bug_id = ?", - undef, $timestamp, $timestamp, $duped_bug_id); - - $count++; - indicate_progress({ current => $count, total => $bug_count, every => 1 }); - } - - Bugzilla::Hook::process('reorg_move_bugs', { bug_ids => [ $dupe_of_bug, @$duped_bugs ] }); - - $dbh->bz_commit_transaction(); -} - -# It's complex to determine which items now need to be flushed from memcached. -# As this is expected to be a rare event, we just flush the entire cache. -Bugzilla->memcached->clear_all(); - -__END__ - -=head1 NAME - -move_dupes_to_invalid.pl - Script used to move dupes of a given bug to the 'Invalid Bugs' product. - -=head1 SYNOPSIS - - move_dupes_to_invalid.pl <bug_id> [<bug_id> ...] |