About

Trac has the capability to synchronize with Subversion whenever a commit is performed on a repository. Unfortunately, the documentation leads down many paths and it is not clear which file is supposed to go where so this tutorial should summarize a working configuration.

File Placement

The following diagram is a filesystem representation starting from the root / and showing the path to a project named project with the svn repository located at /srv/svn/project and the path to the trac environment located at /srv/trac/env/project.

                                            
  /                                         
  +                                         
  |                                         
  +--+ srv                                  
        +                                   
        |                                   
        +--+ svn                            
        |     +                             
        |     |                             
        |     +--+ project                  
        |             +                     
        |             |                     
        |             +--+ conf             
        |             |     +               
        |             |     |               
        |             |     +--+ hooks-env  
        |             |                     
        |             +--+ hooks            
        |                   +               
        |                   |               
        |                   +--+ post-commit
        |                                   
        |                                   
        +--+ trac                           
              +                             
              |                             
              +--+ env                      
              |     +                       
              |     |                       
              |     +--+ project            
              |                             
              +--+ .trac-svn-hook  
                       

The relevant files in this setup are; for the Subversion project:

  • /srv/svn/project/conf/hooks-env
  • /srv/svn/project/hooks/post-commit

and for trac:

  • /srv/trac/.trac-svn-hook

Adding the Trac Subversion Hook Script File

The Trac Subversion scripts is provided in the contrib directory of the Trac project or can be downloaded online and placed as a hidden file at /srv/trac/.trac-svn-hook (one directory up from the Trac environment directory).

The script needs a few changes in the Configuration section of the file. Instead of the defaults:

# export TRAC_ENV=/path/to/trac-env:/path/to/another/trac-env
# export PATH=/path/to/python/bin:$PATH
# export LD_LIBRARY_PATH=/path/to/python/lib:$LD_LIBRARY_PATH

replace with:

export PATH=$PYTHON_BIN:$PATH
export LD_LIBRARY_PATH=$PYTHON_LIB:$LD_LIBRARY_PATH

The TRAC_ENV variable does not have to be set and can be set in the Subversion post-commit hook.

Configuring Subversion Repository

There are two files to be modified inside the Subversion repository:

  • /srv/svn/project/conf/hooks-env
  • /srv/svn/project/hooks/post-commit

The Environment Configuration

The file at /srv/svn/project/conf/hooks-env should be altered to contain the following:

[default]
LANG = en_US.UTF-8
### Set this to the path to the trac environment for the project.
TRAC_ENV=/srv/trac/env/project
PYTHON_BIN=/usr/bin:$PATH
PYTHON_LIB=$LD_LIBRARY_PATH

### This sets the PATH environment variable for the pre-commit hook.
[pre-commit]
PATH = /usr/local/bin:/usr/bin:/usr/sbin

where:

  • TRAC_ENV must be changed to point to the trac environment for the project (in this case, the trac environment for the project named project is located at /srv/trac/env/project).

The Post-Commit Script

Also in the Subversion project directory, the post-commit script located at:

  • /srv/svn/project/hooks/post-commit

must be changed to contain the following:

#!/bin/sh

REPOS="$1"
REV="$2"

/srv/trac/.trac-svn-hook $REPOS $REV

where /srv/trac/.trac-svn-hook is the full path to the .trac-svn-hook file from the Trac contrib directory.

Testing

To check that the setup works, a file can be committed to the repository and then deleted and the changes should show up shortly in the Trac source code view. In case something goes wrong, the client committing the file should retrieve an error about the post-commit script not terminating gracefully.


trac/subversion_synchronization.txt ยท Last modified: 2022/04/19 08:28 by 127.0.0.1

Wizardry and Steamworks

© 2025 Wizardry and Steamworks

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.