The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

CHANGES

=head1 SYNOPSIS

Changes between SVN::Web versions.

=head1 DESCRIPTION

This is a list of the main changes between different versions of
SVN::Web.  Please see L<UPDATING.pod> for details about any changes
you may need to make when updating an SVN::Web installation.

=head2 0.60, pending release

=over

=item

Pulled out mod_perl1/2 and cgi, replaced with Plack. This probably broke lots of things.

=item 

Merged patch from rt26159

=back

=head2 0.54, never released

=over

=item

Fix for RT35186, to make 'selected' compliant with XHTML

=item

Fix for RT37388, by Vladimir Timofeev

=back

=head2 0.53, released Apr 29, 2007

=over

=item

Change how path's are encoded, to work around new strictness in
Template Toolkit's C<uri> filter.  SVN::Web now works with versions
of TT > 2.15.

=item

Adjust F<t/timedate-format.t> to work correctly in non-English locales.
Fixes rt#25435, reported by C<ema_zep@libero.it>.

=back

=head2 0.52, released Jan 22, 2007

=over

=item

Belatedly update the SVN::Web installation to note that Subversion
1.4.0 or above is now required to use SVN::Web.

=back

=head2 0.51, released Jan 15, 2007

=over

=item

C<reposparent> functionality was inadvertently broken in 0.50.  This
release fixes that.  This was rt#24377 reported by Christoph Buescher 
<Christoph.Buescher@fiducia.de>.

=back

=head2 0.50, released Jan 12, 2007

=over

=item

SVN::Web now supports accessing repositories that are B<not> on the same
host as the SVN::Web installation.  Repositories can be accessed using
the I<file:///>, I<http://>, and I<svn://> protocols.

=item

A mechanism for configuring which actions are available on each page has
been introduced.  See L<SVN::Web/"Action menu configuration"> for more.

=item

A new action, L<SVN::Web::Blame> has been introduced.  This generates
output that shows the Subversion annotation/blame information for a
file.

=item

Diff output (from L<SVN::Web::Diff> and L<SVN::Web::Revision>) is now
generated by Subversion, rather than SVN::Web.  This makes diff
generation much faster, and much less memory intensive.  However, it
has meant that the I<context> option is no longer available.

There are several small tweaks to the diff and revision output.

=item

Refactoring and rewriting has meant that L<Digest::MD5>, L<Text::Diff>,
and L<Text::Diff::HTML> are no longer prequisites.

=item

A bug has been fixed in RSS generation.  The contents of the
<description> element are now wrapped in CDATA markers to ensure that
any embedded markup is preserved.

=item

There is now support for keeping localisation files in arbitrary
directories, configured by the C<language_dirs> configuration option.
This makes it simpler to maintain your own localisation files outside
of SVN::Web, and makes it easier to integrate third party actions in
to an SVN::Web installation.

See L<SVN::Web/Languages> and L<SVN::Web::I18N> for more details.

=item

The Template::Toolkit C<log_msg> meta-filter has been replaced with a
Template::Toolkit MACRO, defined in F<_log_msg>.  The effect is the
same, but this approach affords more flexibility (e.g., having
different log message filters per repository).

=item

The log template now supports rudimentary 'paging' through the log
messages.  I<Proper> paging support requires new functionality in
Subversion.  Selecting the number of log messages to show per page
is also more straightforward.

=item

L<SVN::Web::Revision> supports a C<max_diff_size> configuration option
to cope with revisions which may generate huge diffs.

=item

The configuration file (F<config.yaml>) must contain a C<version> key,
otherwise a fatal error is generated.

=item

Most extraneous whitespace is now removed from the templates when output
is being produced.

=item

Documentation bug rt#22282, reported by Andrew Sterling Hanenkamp
<sterling@hanenkamp.com>, has been fixed.

=back

=head2 0.49, released Aug 23, 2006

=over

=item

SVN::Web now properly supports Apache 2 / mod_perl 2.  In addition, the
test suite contains tests that work under Apache 2, and ensure that
future changes should not introduce regressions in this functionality.

=item

File::Spec is now used when constructing filesystem paths, instead of
assuming that the directory separator is F</>.  This should allow the
use of native paths on Windows, e.g. F<< C:\path\to\svnweb >>.

=item

A bug in the mod_perl handler meant that the [% script %] directive
wasn't generating fully qualified links.  This resulted in links in
the RSS feed being relative.  This is now fixed.  Reported by
Dietrich Streifert <dietrich.streifert@visionet.de>.

=item

When testing the generated F<httpd.conf> includes an explicit
C<ServerName> directive, removing a warning on some hosts.  Reported
in rt#20170 by <fiajro@cy.ath.cx>.

=item

Set permissions on the temporary directories when running tests as
root.  Otherwise they fail.  Reported in rt#20170 by
<fiajro@cy.ath.cx>.

=item

Fix a bug encounted on Solaris.  SVN::Core::time_from_cstring() was
returning negative numbers.

=item

The questions that are asked when running C<< perl Build.PL >> can now
be answered and/or skipped by passing command line options to F<Build.PL>.
Run C<< perldoc Build.PL >> for the documentation options.

=item

Paths to Apache modules are no longer hardcoded in F<conf/httpd.tt>.
C<apxs> is used to retrieve the value of the Apache library directory.
In addition, the name of the mod_perl .so file is now configurable, as
different systems call it different things.

=item

Included documentation on using SVN::Web with the IIS web server.
Submitted by Tom Hukins <tom@eborcom.com> in rt#20341.

=item

A bug in the author's testing environment meant that 0.48 shipped with
templates that generated HTML that was not strictly valid.  This, and
the templates, have been fixed.

=back

=head2 0.48, released Jun 28, 2006

=over

=item

The interface localisation can now be selected.  The interface has always
been localised, but the mechanism for choosing it has been badly exposed.
SVN::Web now supports two configuration options (C<languages> and
C<default_language>) to specify the language selection.

In addition, the available configured languages are also exposed through
the (C<trac>) user interface, and the user can choose from the list of
available localisation.  Their choice is saved in a cookie.

=item

Generation of RSS feeds is now done using a template, instead of using
L<XML::RSS>.  This removes a dependency on XML:RSS, and should make it
easier to customise the content of the RSS feed should you desire.

This fixes rt#18169, reported by Mike Ellery <mikee@s2technologies.com>.

=item

RSS feeds are now autodiscoverable in modern browsers.

=item

The formatting of timestamps is now configurable using
L<POSIX/strftime>.  You can choose how timestamps are formatted, and
they can be displayed in UTC (the Subversion default), the server's
local timezone, or the timezone of your choice.  See L<SVN::Web/"Time
and date formatting"> for details.

This fixes rt#18806, reported by Mike Ellery <mikee@s2technologies.com>.

=item

Worked around a bug in Subversion where repository paths that were
specified with a tailing slash would trigger an assertion.  This fixes
rt#19273, reported by Michael Schwern <MSCHWERN@cpan.org>.

=item

Fixed a bug where the C<directory_umask> cache backend option was not being
treated as an octal number.  This fixes rt#19272, reported by
Michael Schwern <MSCHWERN@cpan.org>.

=item

The L<SVN::Web::Revision> action now show's the repository's youngest
revision if no C<rev> parameter is provided.

=item

Fixed a bug in L<SVN::Web::Revision>.  Revisions that contain files that
were copied from another file, modified, and then committed will now be
displayed properly instead of generating an error.

=item

The documentation for L<SVN::Web> includes an example configuration for
Apache and FastCGI, contributed by Robert Spier <rspier@pobox.com>.

=item

Made extensive changes to the test suite.  Include tests that exercise
SVN::Web when running under C<svnweb-server>, as a CGI script, and as an
Apache mod_perl1 handler.  These tests are optional -- the installer
is prompted at C<perl Build.PL> time whether to run these tests, and
to provide the information the tests need (such as the port to run on).

=back

=head2 0.47, released May 6, 2006

=over

=item

Implement support for caching the results of the actions, using any of
the L<Cache::Cache> family of modules.  In tests (see
F<t/benchmark.t>) this can yield a 20% or greater speed benefit.  See
L<SVN::Web/"Data cache"> for details of how to enable the cache and
configure cache related options.

=item

Support Subversion repo directories and files that have spaces or other
characters that should be URI escaped in their names.  Fixes rt#19093,
reported by <gbloice@gmail.com>.

=item

Commented out the references to L<Template::Plugin::Clickable> and
L<Template::Plugin::Clickable::Email> in the config file that is
generated by C<svnweb-install>.  This stops log files filling up with
warnings if they're not present.  The lines remain, commented out, as
a suggestion for users.

=item

Improved the modperl2 support, fixing rt#19004, rt#18437, and rt#18346
(Garrison Hoffman <garrison@codefix.net>, <cpan@rickster.com>,
Thomas Nagel <me@thomasnagel.com>).

=back

=head2 0.46, released Mar 9, 2006

=over

=item

Fixed a bug in C<svnweb-server>.  The L<CGI> module is now always used
when running under this server, instead of L<CGI::Fast>.  This should
fix problems if you are trying to use C<svnweb-server> on a host with
L<CGI::Fast> installed.

=back

=head2 0.45, released Mar 8, 2006

=over

=item

Fixed a bug that broke mod_perl support.

=back

=head2 0.44, released Mar 8, 2006

=over

=item

When browsing the repository the F<trac> templates now include age
of the file, expressed as {seconds, minutes, hours, days, weeks,
months, years} since the file was last modified.

=item

The C<revision>, C<log>, C<view>, and C<rss> actions are much more 
conservative with memory when processing commits that changed a large 
number of files.  Fixes rt#17359, reported by Dietrich Streifert
<dietrich.streifert@visionet.de>.

=item

Included support for running under mod_perl2 as well as mod_perl1.  Fixes
rt#17085 and rt#17350.  Based on a patch from Garrison Hoffman
<garrison@codefix.net>.

=item

Fixed a bug when running under mod_perl -- the HTTP headers were not
being sent.  Some browsers could cope with this, others just displayed
the raw HTML.  Reported by Dominic Mitchell <dom@happygiraffe.net>.

=item

Entering a revision number that does not exist will now generate a
localised error message.  Fixes rt#17822, reported by 
<gk5885@kickstyle.net>

=item

The L<SVN::Web::Revision> action will now not show diffs between
file revisions if either revision of the file has a non-text MIME type.
Fixes rt#17625, reported by Mike Ellery <mikee@s2technologies.com>.

=item

Fixed some bugs in C<svnweb-server>.  Option parsing works properly,
fixing rt#17347 (reported by <miyagawa@cpan.org>) and the
C<--net-server> option is now honoured.

=item

C<svnweb-install> should now work if any directories in the install path
contain regexp metacharacters in the filename.  Fixes rt#17282, reported by
<CORION@cpan.org>.  It also emits warnings if copying files or making
directories during the install process fails, fixing rt#17283.

=back

=head2 0.43, released Jan 25, 2006

=over

=item

Fix a syntax error in the config file generated by svnweb-install.

=item

Fix the instructions and code for running under mod_perl.

=item

When viewing an HTML diff, include a link to the plain text equivalent.

=item

Showing diffs when viewing a revision is now optional, but defaults to on.

=item

Require Exception::Class 1.22 or above.  Versions below lack the necessary
C<caught()> syntax.

=item

Improve the installation and configuration documentation.

=item

Include C<svnweb-server>, a simple web server to make it easier for people
to get started with SVN::Web.

=back

=head2 0.42, released Dec 16, 2005

=over

=item

Throw exceptions instead of die()ing on almost all errors.  Catch the
exceptions and generate much friendlier error messages.  Error messages
are now easy to localise.

=item

When viewing a diff, the I<trac> templates show the two revision numbers
being compared, and include a link allowing the user to reverse the order
of the diff.

=item

The syntax for specifying permitted actions, and the classes that implement
them, has changed.  See L<UPDATING> for more information.  This mechanism
also allows for easy configuration of per-action options.

=item

A (partial) French localisation has been supplied by Cyril Brulebois.

=item

Any C<svn:externals> properties that are set on a directory are now shown
when browsing that directory.

=item

When viewing a file's revision log, you can now select two arbitrary
revisions and get a diff showing the changes between those revisions.
Fixes rt#15813.

=item

If you only have one repository configured then the C<list> action can be
configured to immediately redirect to browsing that repository, saving the
user from having to click through an intermediate page.  See L<SVN::Web::List>
for more information.

=back

=head2 0.41, released Nov 4, 2005

=over

=item

Introduce a [% base_uri %] variable so templates can refer to files
relative to the directory that C<svnweb-install> was run in.  Fix a
hardcoded reference to my home directory in a template.

=item

Update some of the packaging files, which were out of date.

=back

=head2 0.40, released Nov 4, 2005

=over

=item

Maintainership handed from Chia-ling Kao to Nik Clayton.

=item

Overhauled the templates, so the out-of-the-box experience is much
nicer.

=item

Add a C<view> action that shows the contents of a file, along with
the most recent log message.

=item

More customisation options, making it easier to add or remove actions 
from the list of things that SVN::Web is allowed to do.

=item

Added huge swathes of information to the documentation.  It should now 
be much easier for anyone else to contribute code and/or templates to 
SVN::Web.

=item

A fix for rt#12431.  URLs without trailing slashes are fixed.

=item

A mechanism to 'stack' Template Toolkit filters. You can easily run 
log messages through an arbitrary number of filters, without causing 
problems if one or more of the filters is not installed.

=item

Inline display of some content from the repository where appropriate 
(e.g., viewing an image works properly).

=item

Fixed a bug that meant the results from the automated tests weren't 
valid. Fixed the bugs that this uncovered.

=item

Added tests to ensure that the generated HTML is valid.

=back

=head2 0.39

Never released.

=head2 0.38, released Nov 21, 2004

=over

=item

Fix pool mess causing apache to segfault under mod_perl.

=item

Add limit option to log.

=back

=head2 0.37, released Jun 3, 2004

=over

=item

Templates are now css friendly. [Autrijus]

=item

heavy branch detection no longer default.

=back

=head2 0.36, released Nov 24, 2003

=over

=item

Make mod_perl 1 work.

=item

I18n support from Autrijus.

=item

Repository list action from DROLSKY

=item

Fix poor pool usage for branch init.

=back

=head2 0.35, released Nov 19, 2003

=over

=item

Fix RSS links to revisions under mod_perl.

=item

Misc fixes and API catch-up.

=back

=head2 0.30, released Aug 27, 2003

=over

=item

Fix - Escape log message properly.

=item

Add log message when describing a revision.

=item

Sort the entries in browsing.

=item

Adjust pool usage for opened repos so it's easier for modperl to work

=item 

Add mod_perl support.

=back

=head2 0.2, released Aug 26, 2003

=over

=item

Add path navigation support.

=item

Add file diff support.

=item

Add RSS support for tracking changes.

=item

Add mime-type support for checkout and browse.

=item

Add branch info support in directory browsing.

=item

Add branchpoint info in log mode.

=item

Update document.

=back

=head2 0.11, released Aug 25, 2003

=over

=item

Fix - Missing '/' in path in links.

=back

=head2 0.1, released Aug 25, 2003

=over

=item

Initial release.

=back