22ab29391020b2fa738deeb6a0f7b6077bb01c54
For now it simply includes reading in the reflog as a list of entries. This does mean that the drop/append functions don't need to be wrapped, as we can use erlang's list handling. It however also means that we cannot write this back out, as there is currently no way to create an empty reflog that we can fill with our own list.
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
- Carlos Martín Nieto cmn@dwim.me
- Scott Chacon schacon@gmail.com
LICENSE
MIT.
Description
Languages
C
44%
Erlang
39.6%
Elixir
16.2%
Makefile
0.2%