ANN: hit a reimplementation of git storage in haskell.

Hi Haskellers, I just want to announce the hit project [1], which is a reimplementation of low level git operations to read *AND* write to a git repository. It support reading from anything i threw at it (loose objects, packed objects, deltas), a subset of revisions specifier (man gitrevisions), and writing new objects (blob, tree, commit, tag). I don't necessarily want to re-implement git itself (although patches welcome if someone want to go in this direction), and as such the project is a bit of a toy to investigate git storage (for another project of mine) and superseeding my own libgit project (for yet another project). Yet it should be completely functional and have good performance. A few word of the implementation: it's very IO based at the moment; The way things are done by git, doesn't necessarily cope with pure and nice stuff if performance need to follow. That said it should still be easier to understand than reading the git source :-) Any comments welcome, [1] http://hackage.haskell.org/package/hit/ -- Vincent

On Tue, Oct 4, 2011 at 2:15 PM, Vincent Hanquez
Any comments welcome,
Nice! Have you looked at Petr Rockai's hashed-storage? http://hackage.haskell.org/package/hashed-storage-0.5.8 Jason

On 10/04/2011 11:07 PM, Jason Dagit wrote:
On Tue, Oct 4, 2011 at 2:15 PM, Vincent Hanquez
wrote: Any comments welcome, Nice! Have you looked at Petr Rockai's hashed-storage? http://hackage.haskell.org/package/hashed-storage-0.5.8 i heard about it before, but i don't know much more than that. I had a quick look at the hackage documentation: it's interesting and fairly similar in some aspects.
thanks, -- Vincent

Hi Vincent,
great stuff!
I've also got an in-progress toy git clone called ght:
http://github.com/kfish/ght. It only reads, no write support and no
revspec parsing. I tried to keep close to the git design, using mmap
and Ptr-based binary search to read pack indices etc. Doing so seems
fairly un-Haskelly but turned out surprisingly neat, what with Haskell
being the world's finest imperative programming language and all.
Conrad.
On 5 October 2011 05:15, Vincent Hanquez
Hi Haskellers,
I just want to announce the hit project [1], which is a reimplementation of low level git operations to read *AND* write to a git repository. It support reading from anything i threw at it (loose objects, packed objects, deltas), a subset of revisions specifier (man gitrevisions), and writing new objects (blob, tree, commit, tag).
I don't necessarily want to re-implement git itself (although patches welcome if someone want to go in this direction), and as such the project is a bit of a toy to investigate git storage (for another project of mine) and superseeding my own libgit project (for yet another project). Yet it should be completely functional and have good performance.
A few word of the implementation: it's very IO based at the moment; The way things are done by git, doesn't necessarily cope with pure and nice stuff if performance need to follow. That said it should still be easier to understand than reading the git source :-)
Any comments welcome,
[1] http://hackage.haskell.org/package/hit/
-- Vincent
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 10/05/2011 01:58 AM, Conrad Parker wrote:
Hi Vincent,
great stuff!
I've also got an in-progress toy git clone called ght: http://github.com/kfish/ght. It only reads, no write support and no revspec parsing. I tried to keep close to the git design, using mmap and Ptr-based binary search to read pack indices etc. Doing so seems fairly un-Haskelly but turned out surprisingly neat, what with Haskell being the world's finest imperative programming language and all.
Conrad. Hi Conrad,
Look like i'm not the first one to kind-of reimplement git ;-) In my use case, creating objects was the most important bit to get this project running. Design wise, i made sure i can switch to mmap later too, which is the reason of the "filereader" abstraction. I'm actually getting a hold of mmap in haskell in a work project right now, and will probably add a mmap mode along with the handle mode to hit's filereader too. -- Vincent
participants (3)
-
Conrad Parker
-
Jason Dagit
-
Vincent Hanquez