Quick favorite links: Documentation FAQ Download Contact


This is a small utility which makes the excellent tool CvsGraph useful also for subversion users.

There are also other tools to create subversion revision graphs, but at the time of this writing all other known tools are built in features in some graphical development environment. As stand-alone tools svn2cvsgraph and CvsGraph are usable from automatic scripts and cron jobs.

Svn2cvsgraph has been tested on Linux and probably also works fine in other POSIX compatible environments. It might even work on Windows if compiled with MinGW and/or Cygwin, but at the time of this writing svn2cvsgraph has not yet been tested in Windows.


Both CvsGraph and svn2cvsgraph are published under GNU General Public License v.2. For more information on GPL visit the GNU web-site.


From the README:

1. General

This program makes cvsgraph useful also for subversion repositories, the latest
version is available for download from

2. Installation

Step 1, unpack the archive:

tar -xzvf svn2cvsgraph*.tar.gz

Step 2, compile:

cd svn2cvsgraph*

Step 3, become root and install

su (and give password)
make install

3. Usage

As svn2cvsgraph calls svn the command svn must be installed in the PATH.
Also cvsgraph should be installed as the purpose of this program is to
generate an input file for cvsgraph.

First svn2cvsgraph is used to create a file readable by cvsgraph, then
cvsgraph is used to create the graph.

There are some examples of usage in the man page for svn2cvsgraph.

4. Documentation

There is a man-page for svn2cvsgraph, and you will get some help by typing:

svn2cvsgraph -h

5. Known problems

The created rcs file is not fully  cvs  compatible,  it  is  only  good enough
to be read by cvsgraph.

No log messages are saved so %L is not useful in cvsgraph.

It  might  take  many  hours to complete the conversion of a subversion
repository  with  hundreds  of  thousands  of  revisions,  please  have
patience!  With only a few thousand revisions svn2cvsgraph will be done in
seconds, the time required grows exponentially with  the  number  of
revisions.  This program was originally written to present a subversion
repository with less than 10000 revisions, most likely the  graph  created
by cvsgraph for a repository with more revisions is not very useful anyway.

Care should be taken when commiting changes, tagging, branching,  merging  and
deletion  of  tags  and  branches. Unless only one merge, one branch or one
tag is done for each commit the  presented  result  might not be exactly what
you want. Each svn revision can only be represented in one box in the created
graph. Also  branches  should  contain  the entire trunk, not only some

The svn subversion client as well as the repository must be of at least version
1.5 for merges to be tracked. If the subversion  repository  is upgraded  from
a  lower version than 1.5 only merges after the upgrade was done will be


SoftwareCommands for svn2cvsgraph and cvsgraph Time needed for svn2cvsgraph Result (click for entire image)
MPlayer svn2cvsgraph -r svn:// > /tmp/mplayer,v 30 sec 780x1655 pixels
cvsgraph -r/tmp -m. mplayer,v -o /tmp/mplayer.png -O'strip_untagged=true;' -O'rev_hidenumber=true;' -O'merge_to="^B__merged_%1$";' -O'merge_from="^(.*)";' -O'tag_ignore="^B__merged_(.*)";' -O'tag_ignore_merge=true;'
PuTTY svn2cvsgraph -r svn:// -m /putty -b '' > /tmp/putty,v 1 min 42 sec 3349x1397 pixels
cvsgraph -r/tmp -m. putty,v -o /tmp/putty.png -O'strip_untagged=true;' -O'rev_hidenumber=true;'
PHP svn2cvsgraph -r -m /php/php-src/trunk -b /php/php-src/branches -t /php/php-src/tags > /tmp/php,v 1 hour 21 min 40 sec 2598x17931 pixels
cvsgraph -r/tmp -m. php,v -o /tmp/php.png -O'strip_untagged=true;' -O'rev_hidenumber=true;' -O'merge_to="^B__merged_%1$";' -O'merge_from="^(.*)";' -O'tag_ignore="^B__merged_(.*)";' -O'tag_ignore_merge=true;'
The above examples were created 2010-03-28 using svn2cvsgraph 0.9beta and cvsgraph 1.7.0. The commands were run from a directory containing the default cvsgraph.conf delivered with cvsgraph 1.7.0. The contents of the graphs can be adjusted using different switches for svn2cvsgraph. The layout of the graphs can be adjusted by using different switches for cvsgraph and/or modifying cvsgraph.conf.


In lack of questions the FAQ doesn't exist yet. Questions will be answered at SourceForge svn2cvsgraph support page.


svn2cvsgraph 1.2 Copyright (C) 2010-2012 Henrik Carlqvist

Usage: svn2cvsgraph [OPTION]...
  -h         Shows this help
  -r  Set svn repository          (default '')
  -m  Set main trunk directory    (default '/trunk')
  -b  Set branch directory        (default '/branches')
  -t  Set tag directory           (default '/tags')
  -s  Set merge tag prefix        (default 'B__merged_')
  -n  Number of svn revs to show as tags    (-1=all) (default '30')
  -O  Tag svn rev where branching out (1=true, 0=false) (default '1')
  -M  Tag svn rev where at merge to   (1=true, 0=false) (default '1')
  -B  Tag svn rev on top of branch    (1=true, 0=false) (default '1')
  -T  Tag svn rev on tag              (1=true, 0=false) (default '1')
  -H  Hide removed tags               (1=true, 0=false) (default '1')
  -D  Duplicate names  (0=don't care, 1=hide, 2=rename) (default '0')

This is free software; see the source for copying conditions. There is NO



Date       Version  Comment
27/12 2014 2.1beta  Now making one call to svn for each revision to extract
                    merge info in a way compatible with svn version 1.6.17
                    and newer. Unfortunately even version 2.0 misses some
                    merge info with svn version 1.6.17 and newer. The lost
                    subversion merge info is reported as bug report 4477 in
                    the subversin issue tracker. Until bug 4477 has been
                    fixed there is no other way to be sure to get all merge
                    information than to make one call to svn for each
                    revision in the repository. Version 2.1beta of
                    svn2cvsgraph does make one call for every revision.
                    As you can understand this is not a very nice thing
                    to do. Please do NOT use version 2.1beta of svn2cvsgraph
                    to fetch information from subversion repositories that
                    do not belong to you! Using 2.1beta might upset the
                    repository owner.

28/12 2013 2.0      Now making one call to svn for each branch to extract
                    merge info in a way compatible with svn version 1.6.17
                    and newer.

3/3   2012 1.2      No longer allowing CVS HEAD to be placed on a tag on main
                    trunk, this is a bug-fix to avoid hidden versions above
                    head on main trunk.

19/2  2012 1.1      Now also detecting branches created with
                    "svn copy --parents"

11/12 2010 1.0      Modifying tags names containing only numbers as cvsgraph
                    does not allow such tag names

28/3 2010  0.9      First public release


Current development version

Current development version is 2.1beta, it is available from SourceForge download. The md5sum of svn2cvsgraph-2.1beta.tar.gz is fdd50fabf918da3cf50f30977247b8e9
Please do NOT use 2.1beta on subversion repositories that do not belong to you! (see CHANGELOG above for more information)

Current stable version

Current stable version is 2.0, it is available from SourceForge download. The md5sum of svn2cvsgraph-2.0.tar.gz is fabb869017a16a17bc3439262746ed85

Because of a known bug in subversion 1.6.17 and newer version 2.0 might not find all merges. (see CHANGELOG above for more information)

Older versions

Version 1.2 is available from SourceForge download. The md5sum of svn2cvsgraph-1.2.tar.gz is 9b49ff42026e88656bf9c500b18f5704

Version 1.1 is available from SourceForge download. The md5sum of svn2cvsgraph-1.1.tar.gz is b0db93bc8808524bd0a2276af544cf4a

Version 1.0 is available from SourceForge download. The md5sum of svn2cvsgraph-1.0.tar.gz is c466c44848dedfb46db7a5054b521f1a

First public version was 0.9beta, it is available from SourceForge download. The md5sum of svn2cvsgraph-0.9.tar.gz is 33993d7f76640e3e5b1a771f3668b08e

Other software

To use svn2cvsgraph you will also need cvsgraph, version 1.7.0 is available from SourceForge download or get the latest version from CvsGraph official web-site


CvsGraph An excellent tool for creating revision graphs.
Subversion A powerful version control system


Bug reports

Bugs should be reported to the SourceForge Bug Tracking System.

Feature requests

With my limited time to spend I make no promises, but requests for new features can be posted at SourceForge svn2cvsgraph feature request page. Feature requests are welcome, but even more welcome are new implemented features contributed as patches at SourceForge svn2cvsgraph patches page.


Questions will be answered at SourceForge svn2cvsgraph support page.


It was once possible contact me, Henrik Carlqvist, by my sourceforge email. Unfortunately that email address is no longer usable because large amounts of spam.
Hosted by:
SourceForge Logo