NAME GitStore - Git as versioned data store in Perl VERSION version 0.10 SYNOPSIS use GitStore; my $gs = GitStore->new('/path/to/repo'); $gs->set( 'users/obj.txt', $obj ); $gs->set( ['config', 'wiki.txt'], { hash_ref => 1 } ); $gs->commit(); $gs->set( 'yyy/xxx.log', 'Log me' ); $gs->discard(); # later or in another pl my $val = $gs->get( 'user/obj.txt' ); # $val is the same as $obj my $val = $gs->get( 'config/wiki.txt' ); # $val is { hashref => 1 } ); my $val = $gs->get( ['yyy', 'xxx.log' ] ); # $val is undef since discard DESCRIPTION It is inspired by the Python and Ruby binding. check SEE ALSO METHODS new GitStore->new('/path/to/repo'); GitStore->new( repo => '/path/to/repo', branch => 'mybranch' ); GitStore->new( repo => '/path/to/repo', author => 'Someone Unknown ' ); repo your git dir (without .git) branch your branch name, default is 'master' author It is used in the commit info set($path, $val) $gs->set( 'yyy/xxx.log', 'Log me' ); $gs->set( ['config', 'wiki.txt'], { hash_ref => 1 } ); $gs->set( 'users/obj.txt', $obj ); Store $val as a $path file in Git $path can be String or ArrayRef. Any leading slashes ('/') in the path will be stripped, as to make it a valid Git path. The same grooming is done for the "get()" and "delete()" methods. $val can be String or Ref[HashRef|ArrayRef|Ref[Ref]] or blessed Object get($path) $gs->get( 'user/obj.txt' ); $gs->get( ['yyy', 'xxx.log' ] ); Get $val from the $path file $path can be String or ArrayRef delete($path) remove($path) remove $path from Git store commit $gs->commit(); $gs->commit('Your Comments Here'); commit the set changes into Git discard $gs->discard(); discard the set changes history($path) Returns a list of GitStore::Revision objects representing the changes brought to the *$path*. The changes are returned in ascending commit order. FAQ why the files are not there? run git checkout any example? # if you just need a local repo, that's all you need. mkdir sandbox cd sandbox git init # use GitStore->new('/path/to/this/sandbox') # set something git checkout # follows are for remote git url git remote add origin git@github.com:fayland/sandbox2.git git push origin master # do more GitStore->new('/path/to/this/sandbox') later git checkout git pull origin master git push KNOWN BUGS If all files are deleted from the repository, a 'dummy' file will be created to keep Git happy. SEE ALSO Article Python binding Ruby binding Git URL AUTHORS * Fayland Lam * Yanick Champoux COPYRIGHT AND LICENSE This software is copyright (c) 2012 by Fayland Lam . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.