Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!



libgit2 bindings for CHICKEN Scheme.


Obviously, libgit2 is required:

Assuming you have that, installation should be straightforward:

$ git clone git://
$ cd chicken-git
$ chicken-install -test

This library requires libgit2 0.20.0 and Chicken 4.7 or newer.


The library is split into two modules, git and git-lolevel:

  • git-lolevel is essentially just the libgit2 API, thinly wrapped. Most of the function signatures remain the same, with two exceptions:

  • Structures & pointers that would normally be put on the stack and passed as out parameters are allocated automatically.

  • Return values are checked where appropriate, signaling an exception of type (exn git) when negative.

  • git is a higher-level interface around git-lolevel, providing record types for each libgit2 structure.

Documentation is available at


Some functionality is not yet provided, such as custom backends, remotes and reflog inspection. Obviously, patches are more than welcome.



BSD. See LICENSE for details.

Recent activity


evhan pushed 4 commits to evhan/chicken-git

d7fbbb7 - bump version to 0.0.22
f4b886f - remove blob* type declarations (for CHICKEN 4.7 compatibility)
c109abc - Merge branch 'development'
db48c1d - avoid premature free() on reference-target oid result

evhan pushed 4 commits to evhan/chicken-git

e832888 - bind git_remote_is_valid_name
cc0013d - fix remote-clear-refspecs function name
5721ca2 - oid-cpy commit-ids so they're not invalidated when the commit is freed
2725fed - set finalizer on oids produced by oid-cpy

evhan pushed 4 commits to evhan/chicken-git

ff70b6b - fall back to repo-discover when initial repo-open fails
3d5299e - produce object files and an archive for static linking
c0fc141 - check pkg-config for libgit2 version information
7b8209f - clean up imports & move exports to dedicated file

evhan pushed 4 commits to evhan/chicken-git

8dd2d0a - release repository-ref fix for 32-bit systems
0edc3ff - explicitly set umask for file creation tests
aa5c472 - avoid prematurely invalidating OIDs returned by reference-target
dc344d9 - fix CHICKEN->C conversion of negative enum members on 32-bit platforms
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.