svn2cl - Create a ChangeLog from a subversion log.
svn2cl [OPTION]... [PATH]...
svn2cl generates a classic GNU-style ChangeLog from the log messages in a
subversion repository. It acts as a wrapper around the 'svn log'
command, parsing the XML output with an XSLT stylesheet. Alternatively it can
generate HTML output intended for use with the svn2html.css style sheet
that comes with svn2cl.
In addition to its own options, it accepts and passes along most
svn log options; see 'svn help log' for a list of those and their
documentation. If PATH is not given, svn2cl will run svn log on the
current directory, so it should do the right thing when run from the top of
a subversion checkout of the project.
- --strip-prefix=NAME
- Strip NAME from the first part of all file names (e.g.
project/trunk). By defaults the current path inside the repository is
stripped.
- --linelen=NUM
- Wrap lines at NUM characters. By default, lines are wrapped at 75
characters. This option is ignored when the --html option is specified.
- --group-by-day
- This option causes all commit messages to be grouped by day, as long as
all the changes are by the same author. By default each message is listed
separately with its own timestamp.
- --separate-daylogs
- Include a blank line between log entries when they are grouped by day.
Only useful with the --group-by-day option. This option is ignored
when the --html option is specified, edit svn2html.css to tune the
layout.
- -i, --include-rev
- Include the subversion revision number in the ChangeLog. If the --html
option is specified this is implied, edit svn2html.css to turn it
off.
- -a, --include-actions
- Add action labels [ADD], [DEL] and [CPY] tags to files to show the
operation that is performned on the files.
- --break-before-msg[=NUM]
- Add a line break (or multiple line breadks) between the paths and the log
message. If the --html option is specified this option is ignored, edit
svn2html.css to set spacing.
- --reparagraph
- Newlines inside paragraphs are ignored and paragraphs are re-wrapped.
Paragraphs are separated by empty lines.
- --title=NAME
- If outputting an HTML file the NAME is used as the title. This
option is ignored for normal text output.
- --revision-link=NAME
- This option is used to generate links from the revision numbers in the
generated HTML file. If NAME contains two hashes '##' that
part will be replaced by the revision number, otherwise the revision
number will be appended to NAME. Only the first occurrence of
'##' will be replaced.
This option is ignored for normal text output.
- --ticket-link=NAME
- This option is used to generate links from references to tickets within
the commit message in the generated HTML file. Anything that looks like a
ticket reference (e.g. '#foo') will be replaced with a link to NAME
with the ticket part ('foo' in the example) appended.
This option is ignored for normal text output.
- --ticket-prefix=NAME
- This option is used for finding ticket markers in the commit message (when
the --ticket-link option is used). The default value is '#'.
This option is ignored for normal text output.
- --ignore-message-starting=STRING
- Any log messages that start with the specified STRING are ignored
and will not show up in the output. The STRING comparison is case
sensitive.
- -o, -f, --output=FILE,
--file=FILE
- Output ChangeLog to FILE instead of the default ChangeLog
(or ChangeLog.html for HTML output).
- --stdout
- Output ChangeLog to stdout instead of to a file.
- --authors=FILE
- The FILE is used to map author names as exported by svn to full
names. See the section on AUTHORS FILES below for more information.
Note that the --authors option can have poor performance in some cases.
- --html
- Generate an HTML file containing a ChangeLog instead of the default text
ChangeLog file. This feature is still experimental. The
svn2html.css file that is included in the distribution can be used
to format the HTML.
- -h, --help
- Show short summary of options.
- -V, --version
- Show version of program.
Optional PATH arguments and the following options are passed
directly to the 'svn --xml log' command: -r,
--revision, --targets, --stop-on-copy,
--username, --password, --no-auth-cache,
--non-interactive, --config-dir and --limit.
See 'svn help log' for more information on these options.
An authors file is basically an XML file that should look something like:
<?xml version="1.0" encoding="utf-8"?>
<authors>
<author uid="arthur">
Arthur de Jong <arthur@arthurdejong.org>
</author>
</authors>
svn2cl searches for <author> tags with the specified uid attribute. The
content from the author tag is substituted for the author name.
The <author> tag may also contain XML child tags which can
be useful for embedding HTML into the result. For this to work namespace
information should be included for HTML output:
<?xml version="1.0" encoding="utf-8"?>
<authors xmlns:html="http://www.w3.org/1999/xhtml">
<author uid="arthur">
Arthur de Jong
<<html:b>arthur@arthurdejong.org</html:b>>
</author>
</authors>
The svn2cl distribution contains a sample authors.xml file.
As a bonus a plain text authors file that looks like the following
is automatically converted to the XML representation:
arthur:Arthur de Jong <arthur@arthurdejong.org>
Note that the default revison range for svn log is BASE:1. This means
that svn2cl will not always include the most recent revisons of the
repository. Either run 'svn update' before running svn2cl or
pass '-r HEAD:1'.
Run svn log recursively on the current directory and generate a text ChangeLog
file in the current directory for the entire log history:
svn2cl
Output the changes from the last week, while including revision
numbers in the ChangeLog:
svn2cl -i -r "HEAD:{`date -d '7 days ago' '+%F %T'`}"
(actually subversion will include the first revision before the specified
period)
Generate an HTML changelog for
svn://svn.example.com/project/trunk, removing "project/trunk" from
the file names in the changelog. Group all commits per day into one
ChangeLog entry and only include changes from 2005:
svn2cl --html --strip-prefix=project/trunk --group-by-day \
-r '{2006-01-01}:{2005-01-01}' \
svn://svn.example.com/project/trunk
Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2013 Arthur de Jong
<arthur@arthurdejong.org>.
This is free software; see the license for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.