Files
geef/README.md
Carlos Martín Nieto ed6654fe59 Update README
Show more capabilities of the elixir part
2013-07-12 18:38:18 +02:00

73 lines
1.5 KiB
Markdown

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:
```erlang
{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!`.
```elixir
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
```elixir
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
==============
* Carlos Martín Nieto <cmn@dwim.me>
* Scott Chacon <schacon@gmail.com>
LICENSE
==============
MIT.