Docutils | Overview | About | Users | Reference | Developers

The Docutils Version Repository


Lea Wiemann, Docutils developers


Docutils uses a Subversion (SVN) repository located at

While Unix and Mac OS X users will probably prefer the standard Subversion command line interface, Windows user may want to try TortoiseSVN, a convenient explorer extension. The instructions apply analogously.

There is a Git mirror at providing web access and the base for creating a local Git clone. [1]

For the project policy on repository use (check-in requirements, branching, etc.), please see the Docutils Project Policies.

Accessing the Repository

Web Access

The repository can be browsed and examined via the web at

Alternatively, use the web interface at [1]

Repository Access Methods

To get a checkout, first determine the root of the repository depending on your preferred protocol:

anonymous access: (read only)


Git: git://

developer access: (read and write)


Checking Out the Repository

Git users can clone a mirror of the docutils repository with

git clone git://

and proceed according to the Git documentation. Developer access (read and write) is possible with git svn.

Subversion users can use the following commands (substitute your preferred repository root for ROOT):

  • To check out only the current main source tree of Docutils, type

    svn checkout ROOT/trunk/docutils
  • To check out everything (main tree, sandboxes, web site, and parallel projects), type

    svn checkout ROOT/trunk docutils

    This will create a working copy of the whole trunk in a new directory called docutils.

Note that you probably do not want to check out the ROOT itself (without "/trunk"), because then you'd end up fetching the whole Docutils tree for every branch and tag over and over again.

To update your working copy later on, cd into the working copy and type

svn update

Switching the Repository Root

If you changed your mind and want to use a different repository root, cd into your working copy and type:

svn switch --relocate OLDROOT NEWROOT

Editable installs

There are several ways to ensure that edits to the Docutils code are picked up by Python.

We'll assume that the Docutils "trunk" is checked out under the ~/projects/ directory.

  1. Do an editable install with pip:

    python3 -m pip install -e ~/projects/docutils/docutils
  2. Install "manually".

    Ensure that the "docutils" package is in the module search path (sys.path) by one of the following actions:

    1. Set the PYTHONPATH environment variable.

      For the bash shell, add this to your ~/.profile:

      export PYTHONPATH

      The first line points to the directory containing the docutils package, the second line exports the environment variable.

    2. Create a symlink to the docutils package directory somewhere in the sys.path, e.g.,

      ln -s ~/projects/docutils/docutils \
    3. Use a path configuration file.

    Optionally, add some or all front-end tools to the binary search path, e.g.:

    1. add the tools directory to the PATH variable:

      export PATH


    2. link idividual front-end tools to a suitable place in the binary path:

      ln -s ~/projects/docutils/docutils/tools/ \
  3. Do a regular install. Repeat after any change.


A useful addition to the docutils top-level directory in SVN branches and alternate copies of the code is a set-PATHS shell script containing the following lines:

# source this file
export PATH=$PWD/tools:$PATH

Open a shell for this branch, cd to the docutils top-level directory, and "source" this file. For example, using the bash shell:

$ cd some-branch/docutils
$ . set-PATHS

Information for Developers

If you would like to have write access to the repository, register with and send your user names to (Note that there may be a delay of several hours until you can commit changes to the repository.)

Sourceforge SVN access is documented here

Ensure any changes comply with the Docutils Project Policies before checking in,

Setting Up Your Subversion Client For Development

Before committing changes to the repository, please ensure that the following lines are contained (and uncommented) in your local ~/.subversion/config file, so that new files are added with the correct properties set:

# For your convenience:
global-ignores = ... *.pyc ...
# For correct properties:
enable-auto-props = yes

*.py = svn:eol-style=native;svn:keywords=Author Date Id Revision
*.txt = svn:eol-style=native;svn:keywords=Author Date Id Revision
*.html = svn:eol-style=native;svn:keywords=Author Date Id Revision
*.xml = svn:eol-style=native;svn:keywords=Author Date Id Revision
*.tex = svn:eol-style=native;svn:keywords=Author Date Id Revision
*.css = svn:eol-style=native;svn:keywords=Author Date Id Revision
*.patch = svn:eol-style=native
*.sh = svn:eol-style=native;svn:executable;svn:keywords=Author Date Id Revision
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
*.gif = svn:mime-type=image/gif

Repository Layout

The following tree shows the repository layout:

|-- branches/
|   |-- branch1/
|   |   |-- docutils/
|   |   |-- sandbox/
|   |   `-- web/
|   `-- branch2/
|       |-- docutils/
|       |-- sandbox/
|       `-- web/
|-- tags/
|   |-- tag1/
|   |   |-- docutils/
|   |   |-- sandbox/
|   |   `-- web/
|   `-- tag2/
|       |-- docutils/
|       |-- sandbox/
|       `-- web/
`-- trunk/
    |-- docutils/
    |-- sandbox/
    `-- web/

The main source tree lives at docutils/trunk/docutils/, next to the sandboxes (docutils/trunk/sandbox/) and the web site files (docutils/trunk/web/).

docutils/branches/ and docutils/tags/ contain (shallow) copies of either the whole trunk or only the main source tree (docutils/trunk/docutils).