APIs (libgit2 main)

  • A commit and information about how it was looked up by the user.

  • Apply patches to the working directory or index

  • Attribute management routines

  • Specify a file's most recent changes per-line

  • A blob represents a file in a git repository.

  • Branch creation and handling

  • A data structure to return data to callers

  • TLS and SSH certificate handling

  • Update the contents of the working directory

  • Cherry-pick the contents of an individual commit

  • Clone a remote repository to the local disk

  • A representation of a set of changes in the repository

  • Base platform functionality

  • Per-repository, per-user or per-system configuration

  • Authentication and credential management

  • Utility functions for credential management

  • Deprecated functions and values

  • Describe a commit in reference to tags

  • Indicate the differences between two versions of the repository

  • Produce email-ready patches

  • Error handling routines and variables

  • Filters modify files during checkout or commit

  • libgit2 library initializer and shutdown functionality

  • Graph traversal routines

  • Ignore particular untracked files

  • Index (aka "cache" aka "staging area")

  • Packfile indexing

  • Mailmaps provide alternate email addresses for users

  • Merge re-joins diverging branches of history

  • Commit messages

  • Low-level networking functionality

  • Notes are metadata attached to an object

  • Objects are blobs (files), trees (directories), commits, and annotated tags

  • An object database manages the storage of git objects

  • Object database backends manage the storage of git objects

  • Object IDs

  • An array of object IDs

  • Git pack management routines

  • Patches store the textual diffs in a delta

  • Specifiers for path matching

  • TLS proxies

  • Rebase manipulates commits, placing them on a new parent

  • A database for references (branches and tags)

  • Reference logs store how references change

  • References point to a commit; generally these are branches and tags

  • Refspecs map local references to remote references

  • Remotes are where local repositories fetch from and push to

  • The repository stores revisions for a source tree

  • Reset will update the local repository to a prior state

  • Cherry-pick the inverse of a change to "undo" its effects

  • Parse the textual revision information

  • Traverse (walk) the commit graph (revision history)

  • Signatures are the actor in a repository and when they acted

  • Stashes stores some uncommitted state in the repository

  • Status indicates how a user has changed the working directory and index

  • An array of strings for the user to free

  • Submodules place another repository's contents within this one

  • A (nearly) immutable pointer to a commit; useful for versioning

  • Tracing functionality to introspect libgit2 in your application

  • Transactional reference handling

  • Transports are the low-level mechanism to connect to a remote server

  • Trees are collections of files and folders to make up the repository hierarchy

  • libgit2 base & compatibility types

  • The version of libgit2

  • Additional working directories for a repository

  • Custom memory allocators

  • Low-level Git commit creation

  • Commit graphs store information about commit relationships

  • Custom configuration database backends

  • Low-level credentials implementation

  • Low-level diff utilities

  • Advanced git email creation routines

  • Advanced error handling

  • Custom filter backends and plugins

  • Signatures for file similarity comparison

  • Low-level index manipulation routines

  • A custom object database backend for storing objects in-memory

  • Custom merge drivers

  • Incremental multi-pack indexes

  • Object database backends for custom object storage

  • Custom OpenSSL functionality

  • Custom path handling

  • Custom reference database backends for refs storage

  • Low-level git reference creation

  • Low-level remote functionality for custom transports

  • Custom repository handling

  • Streaming file I/O functionality

  • Custom transport registration interfaces and functions