Written by [Thomas Gazagnaire](
Published: 2016-08-24 (last updated: 2017-05-19)

Several extensions should be developed (help needed here):

Garbage collector

git gc is an efficient command which compress "live" objects in Git repositories and remove unused ones. It consists at going through the graph of object in one go to find the live objects (the roots being pointed out byt the references) and then use an efficient sliding-window compression method to generate a pack file. It would be nice to (i) re-implement the same algorithm to be used on any kind of Irmin store (not only Git ones) and evaluate it against git gc; and (ii) explore alternative GC strategies with different trade-offs.

Related issue: mirage/irmin#96

Local synchronisation between Git repositories

ocaml-git is an implementation of Git in pure OCaml. It currently supports only a subset of the Git protocols. It would be nice to extend it to support synchronisation between local repositories.

Related issue: mirage/ocaml-git#27

Git server

Git server-side implementation