NAME
SVN::TXN::Props - Provides a hash interface to Subversion transaction properties
SYNOPSIS
use SVN::TXN::Props qw(get_txn_props);
my $repository_path = '/svnrepo';
my $txn_name = '1-0';
my $props = get_txn_props($repository_path, $txn_name);
$props->{'svn:author'} = 'nobody';
my %props;
tie %props, 'SVN::TXN::Props', $repository_path, $txn_name;
$props{'svn:author'} = 'nobody';
my $txn = SVN::Repos::open($repository_path)->fs->open_txn($txn_name);
$props = get_txn_props($txn);
tie %props, 'SVN::TXN::Props', $txn;
my @paths = keys %{tied(%props)->txn->root->paths_changed()};
DESCRIPTION
Maps properties from a subversion transaction to a hash. This allows for reading and manipulating properties of active subversion transactions before the transaction is commited, for example during a pre-commit hook script.
This module provides a tied hash interface, allowing it to be used with the perl tie function, eg:
use SVN::TXN::Props;
tie %props, 'SVN::TXN::Props', $repository_path, $txn_name;
$props{'svn:author'} = 'nobody';
The arguments to the tie function can either be the path to a repository and the name of a transaction, or an already open transaction object:
my $txn = SVN::Repos::open($repository_path)->fs->open_txn($txn_name);
tie %props, 'SVN::TXN::Props', $txn;
Alternatively, the function get_txn_props can be imported, which will returned an already tied hash reference, eg:
use SVN::TXN::Props qw(get_txn_props);
my $props = get_txn_props($repository_path, $txn_name);
$props->{'svn:author'} = 'nobody';
As with the tie call, a single open transaction object can be passed to get_txn_props instead of the repository_path and txn_name.
The underlying SVN::TXN::Props object is returned by the tie call, or can be obtained from the tied hash using the perl tied() function. This provides a single method txn() that will return the underlying subversion transaction object, eg:
my $txn_props = tie %props, 'SVN::TXN::Props', $repository_path, $txn_name;
my @paths = keys %{$txn_props->txn->root->paths_changed()};
SEE ALSO
SVN::Repo, SVN::Fs
AUTHOR
Chris Leishman, <chris@leishman.org>
COPYRIGHT AND LICENSE
Copyright (C) 2007 by Chris Leishman
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.7 or, at your option, any later version of Perl 5 you may have available.