Archive for 'Trac'

Make tickets by milestone useful in trac

Trac is a great bug tracking, work ticket, action item management environment. It integrates well with SVN and other source control repositories.

Its Roadmap view conveniently order milestones by due date. However, the custom report queries it comes with order milestones by their name. Frankly, that’s much less useful. I understand that they are replacing the SQL-driven custom reports with a customizable GUI interface, but in the meantime here’s how you can fix the issue:

  1. Go to Edit Report
  2. Insert this clause after any FROMs and before any ORDER BYs:
    LEFT JOIN milestone m ON m.name = t.milestone
    
  3. Prefix any ambiguous column names with a t.
  4. Insert due as the first column in the ORDER BY list

The report will now sort by milestone due date while allowing for empty milestones.

See Also

Setting up svn with trac

Trac is an excellent web-based wrapper for SVN that adds bug tracking, a wiki, and several handy project management features. I keep setting up new repositories up for all the little projects we cook up in DB2 Technical Marketing, so I thought I’d write up a guide.

Installing Trac, SVN, and dav_svn for Apache2 is left as an exercise for the reader.

Create a new SVN repository:

svnadmin create /var/svn/Project

Create a new Trac environment:

trac-admin /var/trac/Project initenv

Change the owner to Apache so that it can read and write:

cd /var/svn
chown -R www-data Project
cd ../trac
chown -R www-data Project

Navigate to Apache site settings:

cd /etc/apache2/sites-enabled

If you want Trac to support multiple repositories, edit the trac file to look like this:


        ServerAdmin me@somewhere.com
        ServerName mysite.com
        DocumentRoot /usr/share/trac/cgi-bin/
        
                Options Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                allow from all
        
        Alias /var/trac/chrome/common /usr/share/trac/htdocs
        
                Order allow,deny
                Allow from all
        
        Alias /trac "/usr/share/trac/htdocs"

        
                SetEnv TRAC_ENV_PARENT_DIR "/var/trac"
        
        
                AuthType Basic
                AuthName "Trac"
                AuthUserFile /etc/apache2/trac.passwd
                Require valid-user
        

        DirectoryIndex trac.cgi
        ErrorLog /var/log/apache2/error.trac.log
        CustomLog /var/log/apache2/access.trac.log combined

The above assumes that all the repositories are in /var/trac

Navigate to Apache settings:

cd /etc/apache2/mods-enabled/

Append to dav_svn.conf:


   DAV svn
   SVNPath /var/svn/Project

   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz

  
    Require valid-user
  


The above lets you check out from http://yoursite/svn/Project

If you like, you can add a new user to dav_svn.psswd:

cd ..
htpasswd2 /etc/apache2/dav_svn.passwd NewUser

Users can then be granted permissions by editing the dav_svn.authz file. Sample file:

[groups]
developers = NewUser, OtherUser
others = ThirdUser

# Restrictions on the entire repository.
[/]
# Anyone can read.
* = r
# Developers can change anything.
@developers = rw

# Other can write here
[/trunk/public/images]
@others = rw

[/trunk/public/stylesheets]
@others = rw

Restart Apache:

killall apache2
apache2

You now have have an Trac/SVN install with SVN at http://yoursite/svn/Project and Trac at http://yoursite/trac.cgi