X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FControl.pm;h=33db8816a2a28f5ac5de974b71cdac7f3eb5ed90;hb=c89a96b3d745f9ae157da11f8c86f45883fbeb5d;hp=237bcd63736fb563abdbb77c92a71e453fe0ccd9;hpb=fbf96e721f2ccf58041ccfe687ab2f1c9b7af4b0;p=debbugs.git diff --git a/Debbugs/Control.pm b/Debbugs/Control.pm index 237bcd6..33db881 100644 --- a/Debbugs/Control.pm +++ b/Debbugs/Control.pm @@ -1591,7 +1591,7 @@ sub set_found { } # if the found we are adding matches any fixed # versions, remove them - my @temp = grep m{(^|/)\Q$sver\E}, keys %fixed_versions; + my @temp = grep m{(^|/)\Q$sver\E$}, keys %fixed_versions; delete $fixed_versions{$_} for @temp; $fixed_removed{$_} = 1 for @temp; } @@ -1615,7 +1615,7 @@ sub set_found { # in the case of removal, we only concern ourself with # the version passed, not the source version it maps # to - my @temp = grep m{(^|/)\Q$version\E}, keys %found_versions; + my @temp = grep m{(?:^|/)\Q$version\E$}, keys %found_versions; delete $found_versions{$_} for @temp; $found_removed{$_} = 1 for @temp; } @@ -2168,7 +2168,7 @@ sub set_merged { $locks--; } __end_control(%info); - for my $change (values %{$changes}, @{$disallowed_changes}) { + for my $change ((map {@{$_}} values %{$changes}), @{$disallowed_changes}) { print {$transcript} "$change->{field} of #$change->{bug} is '$change->{text_orig_value}' not '$change->{text_value}'\n"; } die "Unable to modify bugs so they could be merged"; @@ -2319,6 +2319,17 @@ sub __calculate_merge_status{ @{$merge_status{"${_}_versions"}}{@{$data->{"${_}_versions"}}} = (1) x @{$data->{"${_}_versions"}}; } } + # if there is a non-source qualified version with a corresponding + # source qualified version, we only want to merge the source + # qualified version(s) + for (qw(fixed found)) { + my @unqualified_versions = grep {m{/}?0:1} keys %{$merge_status{"${_}_versions"}}; + for my $unqualified_version (@unqualified_versions) { + if (grep {m{/\Q$unqualified_version\E}} keys %{$merge_status{"${_}_versions"}}) { + delete $merge_status{"${_}_versions"}{$unqualified_version}; + } + } + } return (\%merge_status,$bugs_to_merge); }