Trac

Introduction
Trac is an open source, web-based project management and bug-tracking tool (source:Wikipedia). Trac is built on python and provides a web interface to version control systems such as Subversion, Git, Mercurial etc. With its wiki markup capability, Trac serves as a great annotation tool for a project's source code.

End Users
For end users interested in using Trac as a wiki, ticket/bug reporting tool send an email to...

Coming soon, a self servicing web interface for provisioning a trac instance(TBD, a landing page...)

Developers
For developers, interested in customizing Trac (theme, plugins etc), setting up a development environment in one's own space without much fuss and moving parts, is of primary concern. This brings down to two essential components for developing for Trac,
 * 1) Python
 * 2) XAMPP (Apache, MySQL, PHP, Perl) stack.

NOTE: Though there may be any number of ways to set up an AMP stack, recommended here is one easy way which has cross-platform capability ie., XAMPP developed by Apache Friends.

Mac OS X
To set up a dev environment for Trac
 * 1) Configure Python
 * 2) Install Trac and related dependencies like Genshi
 * 3) Create Trac instance
 * 4) Deploy Trac on a web server as a CGI executable
 * 5) Configure Apache for Trac

Python

 * 1) Mac OS X comes with a pre-installation of Python, usually one or two years old . Mac OS 10.6 (Snow Leopard) has 2.6.1 version of Python. This is adequate for developing Trac on Mac. Trac officially supports any Python version >=2.5 and <3.0.
 * 2) Configure Python path for custom install of packages to your $HOME
 * 3) Install setuptools

Install Trac
easy_install Trac==dev
 * 1) EasyInstall the latest development version of Trac, which is currently, Trac-0.13dev-r10355. Note: the latest dev version of Trac auto-installs its dependencies ie., Genshi, which was not a feature for Trac-0.12 and earlier installs
 * 2. This will install tracd and trac-admin to ~/bin

Create a Trac project
NOTE: Directory structure mentioned below is just a recommendation. Can customize it to any desired location mkdir -p ~/project-tmd/sites
 * 1) Create a directory for trac meta data
 * 2. Create a directory with project name. Replace  

project_name= cd ~/project-tmd/sites/ mkdir $project_name
 * 3. Create a trac environment for the above project. NOTE: mention full paths when invoking trac-admin command

trac-admin /Users/pnm/project-tmd/sites/myproject1 initenv

Run Trac on Web Server
trac-admin /Users/pnm/project-tmd/sites/myproject1 deploy /tmp/deploy cd ~/project-tmd mv /tmp/deploy/*.
 * 1) Trac provides various options for connecting to a "real" web server: CGI, FastCGI, mod_wsgi and mod_python . Here we will look at running Trac as a simple CGI script. trac.cgi is a Python script which loads the appropriate Python code. This can be generated using the deploy option of trac-admin.


 * 2. trac.cgi will be in the cgi-bin folder inside the given path. Make sure it is executable by your web server. This command also copies static resource files to a htdocs directory of a given destination.

$ cd ~/project-tmd $ ls cgi-bin htdocs sites

$ chmod +x cgi-bin/*


 * 3. Copy trac.cgi to ~/Sites

cp ~/project-tmd/cgi-bin/trac.cgi ~/Sites/.

XAMPP
 SetEnv TRAC_ENV_PARENT_DIR /Users/pnm/project-tmd/sites SetEnv PYTHONPATH /Users/pnm/Library/Python/2.6/site-packages SetEnv PYTHON_EGG_CACHE /Users/pnm/Library/Python/2.6/site-packages 
 * 1) Install and configure XAMPP for Mac
 * 2) Edit /Applications/XAMPP/etc/httpd.conf with the following

ScriptAlias /trac /Users/pnm/Sites/trac.cgi
 * 3. Start xampp's apache, either through the xampp control or command line. NOTE: xampp needs root permission to start apache, but will switch to the current user.

$ sudo /Applications/XAMPP/xamppfiles/bin/httpd -k start
 * 4. Browsing to http://localhost/trac should bring up a list of trac projects created within the ~/project-tmd/sites directory (a link for each project). So, for the above created project (myproject1), the url will be http://localhost/trac/myproject1