NAME
File::Tree::Snapshot - Snapshot files in a git repository
SYNOPSIS
use File::Tree::Snapshot;
my $tree = File::Tree::Snapshot->new(
storage_path => '/path/to/tree',
);
$tree->create
unless $tree->exists;
# modify files, see methods below
$tree->commit;
# or
$tree->reset;
DESCRIPTION
This module manages snapshots of file system trees by wrapping the git
command line interface. It currently only manages generating the snapshots.
The directories are standard Git repositories and can be accessed in the usual ways.
ATTRIBUTES
storage_path
The path to the tree that should hold the files that are snapshot. This attribute is required.
allow_empty
If this attribute is set to true, commits will be created even if no changes were registered.
METHODS
new
my $tree = File::Tree::Snapshot->new(%attributes);
Constructor. See "ATTRIBUTES" for possible parameters.
file
my $path = $tree->file(@relative_path_parts_to_file);
Takes a set of path parts and returns the path to the file inside the storage.
open
my $fh = $tree->open($mode, $file, %options);
Opens a file within the storage. $mode
is passed straight to "open" in perlfunc. The $file
is a relative path inside the storage.
Possible options are:
is_absolute
If set to true the
$file
will be assumed to already be an absolute path as returned by "file", instead of a path relative to the storage.mkpath
Create the path to the file if it doesn't already exist.
create
$tree->create;
Create the directory (if it doesn't exist yet) and initialize it as a Git repository.
exists
my $does_exist = $tree->exists;
Returns true if the storage is an initialized Git repository.
commit
Will commit the changes made to the tree to the Git repository.
reset
Rolls back the changes since the last snapshot.
AUTHOR
phaylon - Robert Sedlacek (cpan:PHAYLON) <r.sedlacek@shadowcat.co.uk>
CONTRIBUTORS
mst - Matt S. Trout (cpan:MSTROUT) <mst@shadowcat.co.uk>
SPONSORS
The development of this module was sponsored by http://socialflow.com/.
COPYRIGHT
Copyright (c) 2012 the File::Tree::Snapshot "AUTHOR", "CONTRIBUTORS" and "SPONSORS" as listed above.
LICENSE
This library is free software and may be distributed under the same terms as perl itself.