Package: debbugs
Severity: wishlist

An engineer in the HP Linux Systems Operation implemented the following simple
addition to the instances of debbugs we're running for our projects.  One 
public instance is visible at bugs.parisc-linux.org.

With this change, it is possible to assign an "owner" to each bug.  This is 
valuable when there is a single "package" in a BTS instance with multiple 
people working on it, such as the kernel.  An engineer who accepts 
responsibility for a bug can tag it to show that they've taken ownership of 
resolving that bug... and who is working on what is clearly visible when the
lists of open bugs are reviewed.

It would be nice if this or some equivalent functionality could show up in
a future release of the debbugs package.  

To use this feature, one sends mail to the control interface, with body lines
of the following form:

    owner 81 Big Bird <[EMAIL PROTECTED]>

Enjoy!

Bdale


diff -u -ur /usr/lib/debbugs.orig/db2html /usr/lib/debbugs/db2html
--- /usr/lib/debbugs.orig/db2html       Sat Oct  7 11:27:13 2000
+++ /usr/lib/debbugs/db2html    Sat Mar 23 17:01:08 2002
@@ -133,6 +133,7 @@
         chomp($s_forwarded= <S>);
         chomp($s_mergedwith= <S>);
         chomp($s_severity= <S>);
+        chomp($s_owner= <S>);
         $_= $s_package; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9()]/;
         $tpack= $_;
         if ($s_severity eq '' || $s_severity eq 'normal') 
@@ -154,6 +155,8 @@
             if length($s_package);
         $indexentry .= $showseverity;
         $indexentry .= "Reported by: ".&sani($s_originator);
+        $indexentry .= ", Assigned to: ".&sani($s_owner)
+            if length($s_owner);
         $indexentry .= ";\nKeywords: ".&sani($s_keywords)
             if length($s_keywords);
         $linkto= $ref; $linkto =~ s,^..,$&/$&,;
diff -u -ur /usr/lib/debbugs.orig/errorlib /usr/lib/debbugs/errorlib
--- /usr/lib/debbugs.orig/errorlib      Wed Dec  1 11:04:01 1999
+++ /usr/lib/debbugs/errorlib   Sat Mar 23 17:01:08 2002
@@ -34,6 +34,7 @@
     chop($s_forwarded= <S>);
     chop($s_mergedwith= <S>);
     chop($s_severity= <S>);
+    chop($s_owner= <S>);
     close(S);
        $s_severity = 'normal' if $s_severity eq '';
     return 1;
diff -u -ur /usr/lib/debbugs.orig/process /usr/lib/debbugs/process
--- /usr/lib/debbugs.orig/process       Wed Nov 22 03:02:51 2000
+++ /usr/lib/debbugs/process    Sat Mar 23 17:01:08 2002
@@ -261,7 +261,7 @@
         $s_forwarded= $set_forwarded if defined($set_forwarded);
                &overwrite("db/$ref.status",
                   "$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");
+                   
"$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n$s_owner\n");
         open(O,"db/$ref.report") || &quit("read original report: $!");
         $x= join('',<O>); close(O);
         if ($codeletter eq 'F') 
@@ -473,7 +473,7 @@
     &overwrite("db/$ref.log",'');
     &overwrite("db/$ref.status",
                "$replyto\n$intdate\n$subject\n$header{'message-id'}\n".
-               "$s_package\n$s_keywords\n\n\n\n$s_severity\n");
+               "$s_package\n$s_keywords\n\n\n\n$s_severity\n$s_owner\n");
     &overwrite("db/$ref.report",
                join("\n",@msg)."\n");
 }
diff -u -ur /usr/lib/debbugs.orig/service /usr/lib/debbugs/service
--- /usr/lib/debbugs.orig/service       Sat Jan 27 14:46:27 2001
+++ /usr/lib/debbugs/service    Sat Mar 23 17:01:08 2002
@@ -476,6 +476,26 @@
            &transcript("$action\n\n");
        }
         &endmerge;
+    } elsif (m/^owner\s+\#?(\d+)\s+(\S.*\S)$/i) {
+        $ok++;
+        $ref= $1; $newowner= $2;
+        if (&setbug) {
+            if (length($s_owner)) {
+                $action= "Owner changed from $s_owner to $newowner.";
+            } else {
+                $action= "Noted your statement that $gBug has been assigned to 
$newowner.";
+            }
+            if (length($s_done)) {
+                $extramessage= "(By the way, this $gBug is currently marked as 
done.)\n";
+            }
+            do {
+                &addmaintainers($s_package);
+                if (length($gFowardList)>0 && length($gListDomain)>0) {
+                    &addccaddress("[EMAIL PROTECTED]");
+                }
+                $s_owner= $newowner;
+            } while (&getnextbug);
+        }
     } else {
         &transcript("Unknown command or malformed arguments to command.\n\n");
         if (++$unknowns >= 5) {
@@ -764,7 +784,8 @@
           "$s_done\n".
           "$s_forwarded\n".
           "$s_mergedwith\n".
-         "$s_severity\n") || &quit("writing db/$ref.status.new: $!");
+         "$s_severity\n".
+         "$s_owner\n") || &quit("writing db/$ref.status.new: $!");
     close(S) || &quit("closing db/$ref.status.new: $!");
     rename("db/$ref.status.new","db/$ref.status") ||
         &quit("installing new db/$ref.status: $!");


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]


Reply via email to