Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
User Manual
From StatSVN
This is the manual for StatSVN, a statistics tool for Subversion (http://subversion.tigris.org) repositories.
Contents
1 Prerequisites
2 Quick Start
2.1 Checking out a module from Subversion
2.2 Creating a SVN log file
2.3 Running StatSVN
3 Command Line Options
3.1 General Options
3.2 Report Options
3.3 Options for Integration with External Tools
3.4 Miscellaneous Options
3.5 Examples
4 Setting Start and End Dates
5 Ant Task
6 Limitations
7 Further Reading
Prerequisites
To run StatSVN, you need:
Java version 1.4.x or above. Type java -version on the command line to see your Java version. You
can download Java (http://java.com/en/download/index.jsp) from Sun's website. You need the download
called “JRE”.
The Subversion command-line client (http://subversion.tigris.org) , version 1.3.0 or higher. The binaries
need to be on your command-line path when executing StatSVN.
Quick Start
It takes three steps to create reports for a Subversion module:
You can skip this step if you have already checked out a working copy, whether with the command line utility as
shown here or a graphical interface, such as TortoiseSVN (http://tortoisesvn.tigris.org) , but make sure to run an
1 of 7 9/29/2007 12:15 PM
User Manual - StatSVN http://svn.statsvn.org/statsvnwiki/index.php?title=User_Manual&print...
"svn update" on your working copy or you may not see all your log entries (see this section of the SVN book
(http://svnbook.red-bean.com/en/1.2/svn.basic.in-action.html#svn.basic.in-action.mixedrevs) for more information).
Typically, the command looks like this (assuming modulename to be the name of the module):
svn co svn://server/repo/trunk/modulename
Change into the directory where you have checked out the module, and use the svn log command to create a log
file.
cd modulename
svn log -v --xml > logfile.log
Running StatSVN
StatSVN is run using the command java -jar statsvn.jar. It takes a bare minimum of two command line
parameters:
For example:
This command creates the reports in the current user directory. You can now point your browser to the file
index.html, which is the table of contents of the report.
General Options
-output-dir <directory>
Specify an output directory. The reports will be generated in this directory. The directory will be created if it
doesn't exist.
-include <include-pattern-list>
-exclude <exclude-pattern-list>
Specify filters to exclude files from the analysis. A file will be ignored if it doesn't match any of the patterns
2 of 7 9/29/2007 12:15 PM
User Manual - StatSVN http://svn.statsvn.org/statsvnwiki/index.php?title=User_Manual&print...
The patterns are lists of Apache Ant (http://ant.apache.org/) -style wildcard patterns, seperated by colons or
semicolons. The wildcards are:
For example, src/**/*.java matches all java files in the src directory or its subdirectories. Note that
*.java only matches java files in the root directory, because '*' does not match subdirectories.
This matches all .c and .h files anywhere in the directory tree except those in the legacy directory and its
subdirectories.
For more information on Ant's wildcard syntax, see the Patternset section of the Ant manual
(http://ant.apache.org/manual/dirtasks.html#patternset) .
If not specified, all files will be included and no files will be excluded.
Note: Unix users must put the patterns in quotes, or the shell will interfere with the wildcards.
-cache-dir <directory>
Specify a cache directory for information retrieved from the Subversion server (e.g. line counts). The data
will be saved in this directory. The directory will be created if it doesn't exist. By default, the current user
directory is used.
-username <subversion_username>
-password <subversion_username>
-tags <tags-regularexpression>
Includes information about Subverison tags into the reports. Only tags matching the regular expression are
included. To include all tags, add -tags '.*' to the command line.
Note: Unix users must put the expression in quotes, or the shell will interfere with the wildcards.
Note: Tags are determined by looking at your repository's /tags directory. To be able to use this feature, you
must generate the log file from the root of your repository, so that the log contains information from both the
/tags and the /trunk. The checked out version does not have to contain the tags directory.
-tags-dir <directory>
<p>Specifies the root directory from which the tags regular expression is evaluated. The default -tags-dir is
/tags/
3 of 7 9/29/2007 12:15 PM
User Manual - StatSVN http://svn.statsvn.org/statsvnwiki/index.php?title=User_Manual&print...
-no-developer <login-name>
Excludes a Subversion account name from all developer reports. This is useful to reduce noise from
administrative and other non-developer accounts. Multiple accounts can be excluded by adding the option to
the command line once for each account.
Report Options
-xdoc
-css <stylesheet>
Optional (default varies for html or xdoc). Specify a Cascading Style Sheet
(http://www.w3.org/TR/REC-CSS2/) for the report. This can be a HTTP URL or a local file. A URL will
simply be linked in every page of the report. A local file will be copied into the report directory.
-notes <notes-file>
The contents of the specified file will be included at the top of the report's index page. The file should
contain a valid block-level HTML fragment, for example:
<p>
These are development statistics for the
<a href="http://www.statsvn.org">StatSVN</a>
project, created by StatSVN itself.
</p>
<p>
<strong>Note:</strong>
This report was generated by an unreleased
development version of StatSVN. It might
contain features not yet found in the
official release.
</p>
-title <title>
Specifies a display title to be used in the reports. The name of the Subversion module will be used as default
if no title is specified.
-bugzilla
Specify the URL of a root of a Bugzilla (http://www.bugzilla.org) installation. Will replace 'Bug ###' in
commit logs with a link to the appropriate bug. (New in StatSVN)
-chora <chora-url>
Specify the URL of a Chora (http://www.horde.org/chora/) installation for the module. This must be the URL
of the page for the module's root directory. StatSVN will create links to Chora for directories, files and
revisions.
-viewvc <viewvc-url>
4 of 7 9/29/2007 12:15 PM
User Manual - StatSVN http://svn.statsvn.org/statsvnwiki/index.php?title=User_Manual&print...
Specify the URL of a ViewVC (http://www.viewvc.org/) installation for the module. This must be the URL
of the page for the module's root directory. StatSVN will create links to ViewVC for directories, files and
revisions.
-mantis <mantis-url>
Specify the root URL of a Mantis bug tracker (http://www.mantisbt.org/) installation. In commit messages,
this will turn “Bug ####” into a link to the appropriate bug.
Miscellaneous Options
-debug
-verbose
-version
-dump
-concurrencyThreshold <millisec>
Switch to concurrent svn diff if the first call takes more than the threshold (in milliseconds) (default: 4000)
-threads <int>
Examples
5 of 7 9/29/2007 12:15 PM
User Manual - StatSVN http://svn.statsvn.org/statsvnwiki/index.php?title=User_Manual&print...
To get the svn log for a date range, put the dates in brackets and add to the log command like this:
Interested in learning more? John Brugge wrote a blog post on this subject.
(http://jbrugge.com/blog/2007/02/27/using-date-ranges-with-statsvn/)
Ant Task
StatSVN comes with an Ant task for the Apache Ant (http://ant.apache.org/) build tool.
<?xml version="1.0"?>
<project name="StatSvnAnt" default="main" basedir=".">
<taskdef name="statsvn" classname="net.sf.statsvn.ant.StatSvnTask" classpath="dist/statsvn.jar" />
<target name="main">
<statsvn
path="d:/statsvn"
log="d:/statsvn/logfile.log"
outputDir="d:/statsvn/stats"
title="StatSVN"
include="**/*.java"
exclude="tests-src/**"
notes="d:/statsvn/report-notes.txt"/>
</target>
</project>
The attributes path and log are required. The other attributes are optional.
The file statsvn.jar file must be on the Ant classpath, or be specified in the taskdef as above.
Limitations
This section lists some limitations and inaccuracies of StatSVN and its reports.
Deleted and moved files: Lines of Code counts will be inaccurate for deleted or moved files. When a file is
deleted or moved, StatSVN does not currently track exactly how many lines it had and by whom they were
committed. (This was impossible in StatCVS, but is future work in StatSVN.)
Branches: StatSVN analyzes anything it is given. Because of the way Subversion treats branches, StatSVN
is not limited to a repository's default branch, as StatCVS was. However, there are currently no special
features that take into account the most common Subversion repository layout (with /branches and /trunk).
Tags: Tags are currently in beta; please see the command line option reference for details on its limitations.
Further Reading
StatCVS offers a view into CVS repository activity
(http://www-128.ibm.com/developerworks/java/library/j-statcvs/)
IBM developerWorks has an article on StatCVS (http://statcvs.sourceforge.net) (StatSVN's parent) by
Tom Copeland. Includes a section on generating reports for several repositories at once and a sidebar
on the value (or lack thereof) of LOC as a measure for productivity.
6 of 7 9/29/2007 12:15 PM
User Manual - StatSVN http://svn.statsvn.org/statsvnwiki/index.php?title=User_Manual&print...
7 of 7 9/29/2007 12:15 PM