Git NEEEEF (Erlang NIF)
C Erlang Elixir Makefile
Pull request Compare This branch is 236 commits ahead of schacon:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
c_src
lib Fix some warnings from mix Nov 14, 2016
src
test
.gitignore
Makefile
README.md
mix.exs
rebar.config

README.md

Geef (Git NIF)

Geef is a simple Erlang NIF that exposes some of the libgit2 library functions to Erlang.

INSTALLING AND RUNNING

First you need to install libgit2:

$ git clone git://github.com/libgit2/libgit2.git
$ cd libgit2
$ make
$ make install

Now, if you have Erlang OTP_R13B04 installed, you can compile this NIF to run in it.

$ git clone git://github.com/carlosmn/geef.git
$ cd geef
$ make
$ mix # if you want to build the elixir modules

The API looks basically like this:

{ok, Repo} = geef_repo:open(".").
Workdir = geef_repo:workdir(Repo).
{ok, Blob} = geef_blob:lookup(Repo, geef_oid:parse("abcde...")).

Elixir

Most functions are available from the elixir modules so you can make use of some elixir-specific things, like Repository.open!, or Reference.resolve!.

alias Geef.Repository
alias Geef.Reference
repo = Repository.open!(".")
ref = Reference.lookup!(repo, "HEAD") |> Reference.resolve!

references, objects, etc are elixir records. Trees implement the Access protocol

%Reference{name: name} = Reference.lookup!(repo, "refs/heads/master")
IO.puts name
{:ok, tree} = Tree.lookup(repo, "abcde...")
IO.inspect tree["src/geef_pkt.erl"]

CONTRIBUTING

Fork carlosmn/geef on GitHub, make it awesomer (preferably in a branch named for the topic), send a pull request.

AUTHORS

LICENSE

MIT.