Skip to content
Git as versioned data store in Perl
Perl
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
t
.gitignore
Changes
MANIFEST
MANIFEST.SKIP
README
dist.ini

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.

Something went wrong with that request. Please try again.