From: ajt <> Date: Mon, 26 Aug 2002 22:18:09 +0000 (-0800) Subject: [project @ 2002-08-26 15:18:09 by ajt] X-Git-Tag: release/2.6.0~1056 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=0f11da677095c1310c91231c3932748232a0400b;p=debbugs.git [project @ 2002-08-26 15:18:09 by ajt] sync with master to make the clone command work --- diff --git a/scripts/service.in b/scripts/service.in index dc724112..b90c30c8 100755 --- a/scripts/service.in +++ b/scripts/service.in @@ -1,11 +1,13 @@ #!/usr/bin/perl -# $Id: service.in,v 1.48 2002/07/10 04:50:17 doogie Exp $ +# $Id: service.in,v 1.49 2002/08/26 15:18:09 ajt Exp $ # ^ more or less ^ # # Usage: service .nn # Temps: incoming/P.nn use Mail::Address; +use File::Copy; + $config_path = '/org/bugs.debian.org/etc'; $lib_path = '/org/bugs.debian.org/scripts'; @@ -378,8 +380,9 @@ END } do { &addmaintainers($s_package); - if (length($gFowardList)>0 && length($gListDomain)>0 ) - { &addccaddress("$gFowardList\@$gListDomain"); } + if (length($gFowardList)>0 && length($gListDomain)>0 ) { + &addccaddress("$gFowardList\@$gListDomain"); + } $s_forwarded= $whereto; } while (&getnextbug); } @@ -465,6 +468,9 @@ END } elsif (m/^retitle\s+\#?(-?\d+)\s+(\S.*\S)\s*$/i) { $ok++; $ref= $1; $newtitle= $2; + if ($ref =~ m/^-\d+$/ && defined $clonebugs{$ref}) { + $ref = $clonebugs{$ref}; + } if (&getbug) { &foundbug; &addmaintainers($s_package); @@ -498,7 +504,7 @@ END } while (&getnextbug); } } - } elsif (m/^merge\s+(-?\d+(\s+-?\d+)+)\s*$/i) { + } elsif (m/^merge\s+(\d+(\s+\d+)+)\s*$/i) { $ok++; @tomerge= sort { $a <=> $b } split(/\s+/,$1); @newmergelist= (); @@ -540,6 +546,52 @@ END &transcript("$action\n\n"); } &endmerge; + } elsif (m/^clone\s+#?(\d+)\s+((-\d+\s+)*-\d+)\s*$/i) { + $ok++; + + $origref = $1; + @newclonedids = split /\s+/, $2; + $newbugsneeded = scalar(@newclonedids); + + $ref = $origref; + if (&setbug) { + if (length($s_mergedwith)) { + &transcript("$gBug is marked as being merged with others.\n\n"); + &nochangebug; + } else { + &filelock("nextnumber.lock"); + open(N,"nextnumber") || &quit("nextnumber: read: $!"); + $v=; $v =~ s/\n$// || &quit("nextnumber bad format"); + $firstref= $v+0; $v += $newbugsneeded; + open(NN,">nextnumber"); print NN "$v\n"; close(NN); + &unfilelock; + + $lastref = $firstref + $newbugsneeded - 1; + + if ($newbugsneeded == 1) { + $action= "$gBug $origref cloned as bug $firstref."; + } else { + $action= "$gBug $origref cloned as bugs $firstref-$lastref."; + } + &getnextbug; + my $ohash = get_hashname($origref); + $ref = $firstref; + for $newclonedid (@newclonedids) { + $clonebugs{$newclonedid} = $ref; + + my $hash = get_hashname($ref); + copy("db-h/$ohash/$origref.log", "db-h/$hash/$ref.log"); + copy("db-h/$ohash/$origref.status", "db-h/$hash/$ref.status"); + copy("db-h/$ohash/$origref.report", "db-h/$hash/$ref.report"); + &bughook('new', $ref, "$s_originator\n$s_date\n$s_subject\n$s_msgid\n$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n"); + link("db-h/$hash/$ref.log", "db/$ref.log"); + link("db-h/$hash/$ref.status", "db/$ref.status"); + link("db-h/$hash/$ref.report", "db/$ref.report"); + + $ref++; + } + } + } } else { &transcript("Unknown command or malformed arguments to command.\n\n"); if (++$unknowns >= 5) {