svn2cvsgraph


Quick favorite links: Documentation FAQ Download Contact

About

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.

License

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

Documentation

From the README:

1. General
----------

This program makes cvsgraph useful also for subversion repositories, the latest
version is available for download from http://svn2cvsgraph.sourceforge.net/

2. Installation
---------------

Step 1, unpack the archive:

tar -xzvf svn2cvsgraph*.tar.gz

Step 2, compile:

cd svn2cvsgraph*
make

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
subdirectory.

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
tracked.
	    

Examples

SoftwareCommands for svn2cvsgraph and cvsgraph Time needed for svn2cvsgraph Result (click for entire image)
MPlayer svn2cvsgraph -r svn://svn.mplayerhq.hu/mplayer > /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://svn.tartarus.org/sgt -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 http://svn.php.net/repository/php/php-src -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.

FAQ

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

Screen-shot

svn2cvsgraph 1.2 Copyright (C) 2010-2012 Henrik Carlqvist

Usage: svn2cvsgraph [OPTION]...
Options:
  -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
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	    

Change-log

From the CHANGELOG:

Date       Version  Comment
----------------------------------------------------------------------------
20/6 2017  2.4beta  Updated version (minor bugfix as 2.3beta still presented
                    itself as 2.2beta).
                    Please do NOT use version 2.3beta of svn2cvsgraph to
                    fetch information from subversion repositories that do
                    not belong to you!

18/6 2017  2.3beta  Fixed bug that might prevent cvs status to be "Active" if
                    files where removed at last commit.
                    Version 2.3beta of svn2cvsgraph still does make one svn
                    call for every revision. As you can understand this is
                    not a very nice thing to do. Please do NOT use version
                    2.3beta of svn2cvsgraph to fetch information from
                    subversion repositories that do not belong to you!

8/8  2015  2.2beta  Now making setting cvs status to "Active" instead of
                    default "Exp" for revisions on top of unmerged branches
                    Version 2.2beta of svn2cvsgraph still does make one svn
                    call for every revision. As you can understand this is
                    not a very nice thing to do. Please do NOT use version
                    2.2beta of svn2cvsgraph to fetch information from
                    subversion repositories that do not belong to you! Using
                    2.2beta might upset the repository owner.

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
	    

Download

Current development version

Current development version is 2.4beta, it is available from SourceForge download. The md5sum of svn2cvsgraph-2.4beta.tar.gz is c750ee46c8674afd7d9adb6bcc995d6e
Please do NOT use 2.4beta 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 2.3beta is available from SourceForge download. The md5sum of svn2cvsgraph-2.3beta.tar.gz is 6a144e306c3366b677861470aac25eed
Please do NOT use 2.3beta on subversion repositories that do not belong to you! (see CHANGELOG above for more information)

Version 2.2beta is available from SourceForge download. The md5sum of svn2cvsgraph-2.2beta.tar.gz is 965dce9a0aad0aeb7d63d32748f68bbd
Please do NOT use 2.2beta on subversion repositories that do not belong to you! (see CHANGELOG above for more information)

Version 2.1beta 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)

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

Links

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

Contact

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.

Support

Questions will be answered at SourceForge svn2cvsgraph support page.

Email

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