Project Management with Bugzilla, CVS and Mailing lists

Philip S Tellis

Yahoo! Inc

Ubuntulive • July 22-24, 2007 • Portland, Oregon

Do you manage a distributed project?

Is communication between your developers efficient?

What's needed?

Project management requirements

Code reviews

Issue tracking

Tracking bug fixes

Communication

We'll get back to that in a bit

for now, let's manage code

The CVSROOT directory

Let's try something

All commits must be against a bug

  1. Prompt the user for a bug id at commit time
  2. Don't commit if a bug id isn't passed

All commits must be against a bug

  1. Prompt the user for a bug id at commit time
  2. Don't commit if a bug id isn't passed

Create a file tc.template

BugId:

Create a file tc.template

BugId:

Seriously, that's all there is to it!

Create a file bugid.verify


#!/bin/sh
if head -1 < $1 | egrep "^BugId:[ ]*[0-9]+$" \
         > /dev/null; then
   exit 0
else
   echo "No BugId found."
   exit 1
fi

Add references to verifymsg and rcsinfo

Tell verifymsg how to check commits:

^src     /usr/cvssupport/bugid.verify

Tell rcsinfo what to prompt devs for:

^src     /usr/cvssupport/tc.template

Add references to verifymsg and rcsinfo

Tell verifymsg how to check commits:

^src     /usr/cvssupport/bugid.verify

Tell rcsinfo what to prompt devs for:

^src     /usr/cvssupport/tc.template

Maybe tell config to reread commit message:

RereadLogAfterVerify=always

You could allow something like BugId: none

Add this before the else:


elif head -1 < $1 | egrep "^BugId:[ ]*none$" \
         > /dev/null; then
   # It is okay to allow commits with
   # "BugId: none", but do not put that
   # text into the real log message.
   egrep -v "^BugId:[ ]*none$" > $1.rewrite
   mv $1.rewrite $1
   exit 0

Email all devs when someone commits foocide

Add to loginfo:

DEFAULT  $CVSROOT/CVSROOT/syncmail -u %{sVv} \
     devs@foo.com

Use the syncmail script provided in the CVS Book

WT%F are %s, %V, %v and %{sVv}?

Make way for Bugzilla

CVS talking to bugzilla — needs a script

Example commit messages

Added log messages to get more data
[bug 31337 time:1 left:3]

...

Added defenestration logic
Removed redundant log messages
[fix bug 31337 time:3 left:0]

bugzilla.procmailrc


    # Check message body for [bug XXXXXX syntax
    :0 Bc
    * \[(fix +)?bug +[0-9]+
    |$HOME/cvsbugz.pl

Now, we'll talk

Communication 2.0 — Blogging on Bugzilla

Where do we stand now?

Release time

Release time

Pointers or References?

Greetz

Philip S Tellis

philip@bluesmoon.info

http://bluesmoon.info/

Made with Eric A Meyer's S5