Git as versioned data store in Perl
Perl
Switch branches/tags
Nothing to show
Latest commit b2863fe Jun 4, 2012 @fayland Merge pull request #4 from yanick/master
Permission to release v0.08?
Permalink
Failed to load latest commit information.
lib don't really need 5.10.0 Jun 3, 2012
t add history() method Jun 3, 2012
.gitignore add .gitignore Jul 23, 2010
Changes distro grooming Jun 3, 2012
MANIFEST distro grooming Jun 3, 2012
MANIFEST.SKIP dzil files tweaking Jul 23, 2010
README pod2usage -output README -verbose 9 lib\GitStore.pm Mar 16, 2009
dist.ini distro grooming Jun 3, 2012

README

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.