X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=migrate%2Fdebbugs-makeversions;h=fd70f2dcfb6262a3f810effa1334555bc0a41fb1;hb=ec74d9703b7f7045ec85d9c66ae19a0710fd0bd9;hp=de34d0f05a77609e6efabd3ad3539167b776fc51;hpb=6eee1707fa88132fa506295ee87dacc6d2644b5e;p=debbugs.git diff --git a/migrate/debbugs-makeversions b/migrate/debbugs-makeversions index de34d0f..fd70f2d 100755 --- a/migrate/debbugs-makeversions +++ b/migrate/debbugs-makeversions @@ -3,6 +3,12 @@ # guesswork, based on Version: pseudo-headers and closing mails that look # like Debian changelogs. The latter in particular is somewhat heuristic. +# <@aj> Hackin' on the BTS, Feelin' like it'll take forever; Oh you better +# hold it's hand, when it dies on names so clever. These are the best +# bugs of our life. It's up to archive-slash-69, man we were killin' +# time, we were young and resltess, we needed to unwind. I guess +# nothin' can last forever - forever, no... + my $config_path = '/etc/debbugs'; my $lib_path = '/usr/lib/debbugs'; @@ -75,7 +81,7 @@ sub getbuginfo ($) $fv =~ s/;.*//; $fv =~ s/ *\(.*\)//; # Strip off other random junk at the end of a version. - $fv =~ s/ *[A-Za-z].*//; + $fv =~ s/ +[A-Za-z].*//; $ver = $fv; } } @@ -161,15 +167,24 @@ while (defined(my $dir = readdir DB)) { next; } - my ($found_versions, $fixed_versions) = getbuginfo("$db/$dir/$file"); + if (@{$status->{found_versions}} or @{$status->{fixed_versions}}) { + unlockreadbugmerge($locks); + next; + } + my @merges = (); + # Only process the lowest of each set of merged bugs. if (length $status->{mergedwith}) { @merges = sort { $a <=> $b } split ' ', $status->{mergedwith}; if ($merges[0] < $bug) { - # already processed unlockreadbugmerge($locks); next; } + } + + my ($found_versions, $fixed_versions) = getbuginfo("$db/$dir/$file"); + + if (length $status->{mergedwith}) { for my $merge (@merges) { $merge =~ /(..)$/; my $mergehash = $1; @@ -182,14 +197,14 @@ while (defined(my $dir = readdir DB)) { @$fixed_versions = () unless length $status->{done}; - for my $out ($bug, (split ' ', $status->{mergedwith})) { + for my $out ($bug, @merges) { if ($out != $bug) { filelock("lock/$out"); } my $outstatus = readbug($out, $db); $outstatus->{found_versions} = [@$found_versions]; $outstatus->{fixed_versions} = [@$fixed_versions]; - writebug($out, $outstatus); + writebug($out, $outstatus, $db, 2, 'disable bughook'); if ($out != $bug) { unfilelock(); }