A cross-platform, linkable library implementation of Git that you can use in your application. (by libgit2)

Libgit2 Alternatives

Similar projects and alternatives to libgit2

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better libgit2 alternative or higher similarity.

Suggest an alternative to libgit2

libgit2 reviews and mentions

Posts with mentions or reviews of libgit2. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-12.
  • Lmao
    1 project | | 19 Feb 2022
  • [I'm giving UP], How do I initialize a git repo from my C code?
    1 project | | 12 Jan 2022
    Thought you'd need a link to libgit2 to complete.
  • `Cargo install --git` -- received unexpected content-type
    2 projects | | 12 Nov 2021
  • Make your monorepo feel small with Git’s sparse index
    7 projects | | 11 Nov 2021
    The index as a data structure is really starting to show its age, especially as developers adapt Git to monorepo scale. It's really fast for repositories up to a certain size, but big tech organizations grow exponentially, and start to suffer performance issues. At some point, you can't afford to use a data structure that scales with the size of the repo, and have to switch to one that scales with the size of the user's change.

    I spent a good chunk of time working around the lack of sparse indexes in libgit2, which produced speedups on the order of 500x for certain operations, because reading and writing the entire index is unnecessary for most users of a monorepo: I'm excited to see sparse indexes make their way into Git proper.

    Shameless plug: I'm working on improving monorepo-scale Git tooling at, such as with in-memory rebases: Try it out if you work in a Git monorepo.

  • Basic Question
    3 projects | | 2 Sep 2021
  • New in Git: switch and restore
    2 projects | | 1 Aug 2021
    What? libgit absolutely exists. Or you could use low level commands, they have stable machine readable CLI interfaces.
  • When you write a commit message to commit to a local repo, where is the commit message stored?
    2 projects | | 15 Jun 2021
    If you need to read this information in a program, look at libgit2 (
  • alternative to auto.crlf on windows
    1 project | | 1 Apr 2021
    Here we create a file .gitattributes file and commit it to the team repo. Example libgit2 Repo (cross platform)
  • Browsing bare repositories
    1 project | | 25 Mar 2021
    You could use something like libgit2.
  • Is there some kind Smalltalk property/message based library or notation for dealing with Emacs objects?
    1 project | | 25 Mar 2021
    Alternatively you can try to install libgit and write your own wrappers around libgit2 api, maybe as a plugin or hack Emacs at C level.
  • Write libraries instead of services, where possible
    9 projects | | 9 Mar 2021
    > So why can't you just write your language support library in whatever language you like, wrap that in something that supports the C ABI if it doesn't already, then call that from your editor?

    You can! This is called "defining an API" and this is basically what an LSP is. The downsides of using the C ABI like I said is not all programming languages use the C ABI. To work around this you have suggested writing a wrapper transforms to/from this API that follows the C ABI calling conventions in each language you want to support. To see how fun of an endeavor this is you can look at things like libgit2 [0] which spend a lot of time maintaining bindings for each language. While these bindings do absolutely work they are:

    1. Difficult to maintain (look at some issues [1, 2, 3])

    2. Completely duplicates effort (test frameworks, integration testing, etc cannot be automated).

    If you instead separate into services the lsp team could maintain a whole test suite that your service could be run against. You would provide an LSP + a corpus that has certain features and the test framework could do a set of operations to talk to this system.

    If you use a dsl to describe the protocol you can automatically generate server/client libraries to use to talk to/implement an lsp (and other services!) I'm a huge fan of gRPC for this reason: write a single dsl and now everyone can talk to/implement your service.

    You can define shared debugging tools. For example ebpf can be used to debug any networked application in linux regardless of what it's implemented in. Similar tools can now be developed at an application protocol level for all LSPs to make development easier without tying the infrastructure to a single language or ABI.

    The crux of the issue is: service boundaries solve the exact same thing that C ABI/ffi solve with the following benefit:

    1. No dependency on any language-specific implementation of a protocol or API.

    2. TCP is supported everywhere and you can get a bunch of free monitoring features from using it. It's also pretty darn fast now especially to localhost.

    3. Easy to plug into an TCP server regardless of your runtime environment. Do you need to host your source code on a linus system when your dev environment is running in windows in Visual Studios? No problem!

    > Language support people still have to write language support code. Editor people still have to write editor support code.

    Correct! Except it's which code gets duplicated. Could LSPs been implemented as .so & dlls that followed the C ABI calling conventions passing HSOURCE_FILE* back and forth in process? Yes! Would it have been easy to implement that for all languages in a safe and secure way that can run in an adversarial environment and allow different people to manage and debug different implementations while sharing standardized tooling? No, not easily.

    [0] -

    [1] -

    [2] -

    [3] -

  • C Deep
    80 projects | | 27 Feb 2021
    libgit2 - Portable implementation of the Git core methods, provided as a re-entrant linkable library. Custom license.
  • Swift: failing to convert Int to String, why does this happen?
    1 project | | 7 Jan 2021
    I would strongly recommend you using something like libgit2 for parsing this.


Basic libgit2 repo stats
3 days ago

libgit2/libgit2 is an open source project licensed under GNU General Public License v3.0 or later which is an OSI approved license.

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
Find remote jobs at our new job board There are 7 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.