On this page:
Libgit2:   Bindings for the libgit2 Git Library
8.12

Libgit2: Bindings for the libgit2 Git Library🔗ℹ

Brad Busching <bradley.busching@gmail.com>,
Philip McGrath <philip@philipmcgrath.com>,
and other contributors

 (require libgit2) package: libgit2

This package provides Racket bindings to libgit2, a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library.

The Racket bindings are fairly low-level and closely follow the libgit2 C API: the goal is to provide a foundation for higher-level Git applications or libraries. Racket identifiers containing underscores directly correspond to the C-level functions, types, etc. with the same names. Many functions have different signatures, however, as this library protects Racket programmers from C-level details like memory management and checking error codes.

Status of this library: The Racket interface to libgit2 is not yet stable: backwards-incompatible changes are planned. This package already has extensive coverage of the libgit2 C API, but the signatures of some functions should be changed, either to handle memory management automatically or to use more correct C types at the FFI level.

Additionally, this package was initially developed against libgit2 v0.26.0. It has mostly been updated to support libgit2 v1.4.2—all API removals up to that point have been dealt with, for example—but some additions and modifications remain to be addressed.

Community contributors are working to address these details and stabilize this package around the post-1.0 libgit2 API. You can contribute to the development effort at https://github.com/libgit2-racket/libgit2.

In addition to the Racket interface, the native libgit2 library is distributed via platform-specific dependencies in the Racket package system, currently for GNU/Linux (x86_64), Windows (x86_64 and i386), and Mac OS (x86_64 and Aarch64).

The libgit2 Racket bindings were initially created by Brad Busching as a senior project at California Polytechnic State University, San Luis Obispo, under the guidance of John Clements (clements@racket-lang.org).

    1 Annotated Commit

    2 Blame

    3 Blob

    4 Branch

    5 Buffer

    6 Checkout

    7 Cherrypick

    8 Clone

    9 Commit

    10 Config

    11 Credentials

    12 Describe

    13 Diff

    14 Fetch

    15 Filter

    16 Graph

    17 Ignore

    18 Index

    19 Indexer

    20 Merge

    21 Message

    22 Note

    23 Object

    24 Object Database

    25 Object IDs

      25.1 Object ID Comparisons

      25.2 Formatting Object IDs

      25.3 Short Object IDs

    26 Packbuilder

    27 Patch

    28 Pathspec

    29 Proxy

    30 Push

    31 Rebase

    32 Refdb

    33 Reference

    34 Reflog

    35 Refspec

    36 Remote

    37 Repository

    38 Reset

    39 Revert

    40 Revparse

    41 Revwalk

    42 Signature

    43 Stash

    44 Status

    45 Strarray

    46 Submodule

    47 Tag

    48 Tree

    49 Treebuilder

    Bibliography

    Index