NAME GitStore - Git as versioned data store in Perl 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 <unknown\@what.com>' ); 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 $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 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 SEE ALSO Article <http://www.newartisans.com/2008/05/using-git-as-a-versioned-data-st ore-in-python.html> Python binding <http://github.com/jwiegley/git-issues/tree/master> Ruby binding <http://github.com/georgi/git_store/tree/master> Git URL <http://github.com/fayland/perl-git-store/tree/master> AUTHOR Fayland Lam, "<fayland at gmail.com>" COPYRIGHT & LICENSE Copyright 2009 Fayland Lam, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.