#!/usr/bin/perl
-# $Id: service.in,v 1.102 2005/07/18 02:04:44 cjwatson Exp $
+# $Id: service.in,v 1.103 2005/07/18 02:22:49 cjwatson Exp $
#
# Usage: service <code>.nn
# Temps: incoming/P<code>.nn
@tomerge= sort { $a <=> $b } split(/\s+#?/,$1);
@newmergelist= ();
my %tags = ();
+ my %found = ();
+ my %fixed = ();
&getmerge;
while (defined($ref= shift(@tomerge))) {
&transcript("D| checking merge $ref\n") if $dl;
&checkmatch('done mark','m_done',length($data->{done}) ? 'done' : 'open');
&checkmatch('owner','m_owner',$data->{owner});
foreach my $t (split /\s+/, $data->{keywords}) { $tags{$t} = 1; }
+ foreach my $f (@{$data->{found_versions}}) { $found{$f} = 1; }
+ foreach my $f (@{$data->{fixed_versions}}) { $fixed{$f} = 1; }
if (length($mismatch)) {
&transcript("Mismatch - only $gBugs in same state can be merged:\n".
$mismatch."\n");
if (@newmergelist) {
@newmergelist= sort { $a <=> $b } @newmergelist;
$action= "Merged @newmergelist.";
+ delete @fixed{keys %found};
for $ref (@newmergelist) {
&getbug || die "huh ? $gBug $ref disappeared during merge";
&addmaintainers($data);
$data->{mergedwith}= join(' ',grep($_ ne $ref,@newmergelist));
$data->{keywords}= join(' ', keys %tags);
+ $data->{found_versions}= [sort keys %found];
+ $data->{fixed_versions}= [sort keys %fixed];
&savebug;
}
&transcript("$action\n\n");