Giter VIP home page Giter VIP logo

perl-git-store's Introduction

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 [email protected]: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.

perl-git-store's People

Contributors

fayland avatar yanick avatar

Stargazers

Chris Forbes avatar

Watchers

Chris Forbes avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.