[[tags: egg]]
== git
[[toc:]]
=== Description
Bindings to the [[http://libgit2.github.com|libgit2]] library.
Please note that the libgit library is currently a moving target, under heavy
development. This library has been written and tested against libgit2 0.15.0.
If you encounter problems, check your versions.
=== Documentation
{{git}} provides an interface for reading & manipulating git repositories.
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 a few exceptions:
** Structures & pointers that would go on the stack are allocated
automatically.
** Return values are checked where appropriate, signaling an exception of type
{{git}} when negative.
** Pointer arrays are converted to rest arguments.
* {{git}} is a higher-level interface around {{git-lolevel}}, providing
record types for each libgit2 structure.
The following documentation applies to the {{git}} module.
=== Usage
(use git) ; or...
(use git-lolevel)
It's not recommended to mix the two without prefixing one or the other's
imports, as the two libraries share many identifiers.
=== API
==== Repository
repository
(repository? obj) => boolean
(repository-open [path]) => repository
(repository-path repository [type]) => string
(repository-ref repository ref) => object
(repository-empty? repository) => boolean
(repository-bare? repositoy) => boolean
(pack-references repository) => void
==== OID
oid
(oid? obj) => boolean
(string->oid string) => oid
(oid->string oid [length]) => string
(oid->path oid) => string
==== Reference
reference
(reference? obj) => boolean
(reference repository ref) => reference
(references repository) => list
(reference-id reference) => oid
(reference-owner reference) => repository
(reference-resolve reference) => reference
(reference-id-set reference oid) => void
(reference-rename reference name) => void
(reference-target-set reference target) => void
(create-reference repository name target [symbolic?]) => reference
==== Generic
(object-id object) => oid
(object-sha object [length]) => string
(object-type object) => symbol
==== Blob*
blob*
(blob*? obj) => boolean
(blob* repository ref) => blob*
(blob*-content blob) => blob
(blob*-size blob) => int
==== Commit
commit
(commit? obj) => boolean
(commit repository ref) => commit
(commits repository initial [hide] [sort]) => list
(commit-id commit) => oid
(commit-parentcount commit) => int
(commit-time commit) => int
(commit-time-offset commit) => int
(commit-message commit) => string
(commit-message-short commit) => string
(commit-tree commit) => tree
(commit-author commit) => signature
(commit-committer commit) => signature
(commit-parent commit [n]) => commit
(create-commit repository tree message [parents] author [committer] [reference]) => commit
==== Tag
tag
(tag? obj) => boolean
(tag repository name) => tag
(tags repository) => list
(tag-id tag) => oid
(tag-type tag) => symbol
(tag-name tag) => string
(tag-message tag) => string
(tag-tagger tag) => signature
(tag-target tag) => object
(tag-delete tag) => tag
(create-tag repository target name message tagger) => tag
==== Tree
tree
(tree? obj) => boolean
(tree repository ref) => tree
(tree-id tree) => oid
(tree-entrycount tree) => int
(tree-ref tree key) => tree-entry
(tree->list tree [repo]) => list
(create-tree repository index) => tree
==== Tree Entry
tree-entry
(tree-entry? obj) => boolean
(tree-entry-id tree-entry) => oid
(tree-entry-name tree-entry) => string
(tree-entry-attributes tree-entry) => int
(tree-entry-type tree-entry) => symbol
(tree-entry->object repository tree-entry) => object
==== Index
index
(index? obj) => boolean
(index-open repo-or-path) => index
(index-entrycount index) => int
(index-entrycount-unmerged index) => int
(index-read index) => void
(index-write index) => void
(index-clear index) => void
(index-add index path [stage]) => void
(index-remove index ref) => void
(index-find index) => int
(index-ref index key) => index-entry
(index->list index [type]) => list
==== Index Entry
index-entry
(index-entry? obj) => boolean
(index-entry-id index-entry) => oid
(index-entry-path index-entry) => string
(index-entry-ctime index-entry) => int
(index-entry-mtime index-entry) => int
(index-entry-dev index-entry) => int
(index-entry-ino index-entry) => int
(index-entry-size index-entry) => int
(index-entry-stage index-entry) => int
(index-entry-uid index-entry) => int
(index-entry-gid index-entry) => int
(index-entry-mode index-entry) => int
(index-entry-flags index-entry) => int
(index-entry-extended index-entry) => int
(index-entry->object repository index-entry) => object
==== ODB
odb
(odb? obj) => boolean
(odb-new) => odb
(odb-open repo-or-path) => odb
(odb-has-object? odb ref) => boolean
(odb-read odb ref) => odb-object
(odb-write odb data [type]) => oid
(odb-hash odb data [type]) => oid
==== ODB Object
odb-object
(odb-object? obj) => boolean
(odb-object-id odb-object) => oid
(odb-object-size odb-object) => int
(odb-object-type odb-object) => symbol
(odb-object-data odb-object) => blob
==== Signature
signature
(signature? obj) => boolean
(make-signature name email [time] [offset]) => signature
(signature-name signature) => string
(signature-email signature) => string
(signature-time signature) => int
(signature-time-offset signature) => int
=== Author
Evan Hanson
=== License
Copyright (c) 2011, Evan Hanson, 3-Clause BSD License