Gitex

TODO (DO NOT USE IT SERIOUSLY YET):

Usage

The main API consists in 2 functions:

repo = Gitex.RefImpl.new
Gitex.get(repo,"master") #get commit
Gitex.get(repo,"myannotatedtag") #get tag object
Gitex.get(repo,"master","/path/to/dir")  #get tree object
Gitex.get(repo,"master","/path/to/file") #get blob

# get all commits from master to 1st January 2015
Gitex.history(repo,"master") |> Enum.take_while(& &1.committer.utc_time > {{2015,1,1},{0,0,0}})

The low level API is a function to get an object from a hash : Gitex.object

Gitex.object("abbabef2512234112311923874")

A nice function Gitex.align_history allows you to lazily add an index number to your history stream in order to construct a pretty visualizer very easily (d3.js for instance)

Gitex.history(repo,:head) |> Gitex.align_history