{"id":13420267,"url":"https://github.com/libgit2/libgit2","last_synced_at":"2025-05-13T16:03:32.526Z","repository":{"id":37793466,"uuid":"901662","full_name":"libgit2/libgit2","owner":"libgit2","description":"A cross-platform, linkable library implementation of Git that you can use in your application.","archived":false,"fork":false,"pushed_at":"2025-04-25T14:58:51.000Z","size":72222,"stargazers_count":9963,"open_issues_count":467,"forks_count":2469,"subscribers_count":395,"default_branch":"main","last_synced_at":"2025-04-29T13:27:42.299Z","etag":null,"topics":["c","dvcs","git","hacktoberfest","libgit2","library","version-control"],"latest_commit_sha":null,"homepage":"https://www.libgit2.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libgit2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"COPYING","code_of_conduct":"docs/code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2010-09-10T16:17:48.000Z","updated_at":"2025-04-29T01:48:31.000Z","dependencies_parsed_at":"2022-07-14T09:22:19.175Z","dependency_job_id":"45891ec4-7970-419a-ba92-f8293f414b29","html_url":"https://github.com/libgit2/libgit2","commit_stats":{"total_commits":11941,"total_committers":615,"mean_commits":"19.416260162601628","dds":0.7631689138263127,"last_synced_commit":"5efafa9d25af7df1eb03e5f49ae6449911dbdf35"},"previous_names":[],"tags_count":114,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgit2%2Flibgit2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgit2%2Flibgit2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgit2%2Flibgit2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libgit2%2Flibgit2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libgit2","download_url":"https://codeload.github.com/libgit2/libgit2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252266083,"owners_count":21720792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","dvcs","git","hacktoberfest","libgit2","library","version-control"],"created_at":"2024-07-30T22:01:30.016Z","updated_at":"2025-05-05T22:44:56.086Z","avatar_url":"https://github.com/libgit2.png","language":"C","readme":"libgit2 - the Git linkable library\n==================================\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9609/badge)](https://www.bestpractices.dev/projects/9609)\n\n| Build Status | |\n| ------------ | - |\n| **main** branch builds | [![CI Build](https://github.com/libgit2/libgit2/actions/workflows/main.yml/badge.svg?branch=main\u0026event=push)](https://github.com/libgit2/libgit2/actions/workflows/main.yml?query=event%3Apush+branch%3Amain) [![Experimental Features](https://github.com/libgit2/libgit2/actions/workflows/experimental.yml/badge.svg?branch=main)](https://github.com/libgit2/libgit2/actions/workflows/experimental.yml?query=event%3Apush+branch%3Amain) |\n| **v1.9 branch** builds | [![CI Build](https://github.com/libgit2/libgit2/actions/workflows/main.yml/badge.svg?branch=maint%2Fv1.9\u0026event=push)](https://github.com/libgit2/libgit2/actions/workflows/main.yml?query=event%3Apush+branch%3Amaint%2Fv1.9) [![Experimental Features](https://github.com/libgit2/libgit2/actions/workflows/experimental.yml/badge.svg?branch=maint%2Fv1.9)](https://github.com/libgit2/libgit2/actions/workflows/experimental.yml?query=event%3Apush+branch%3Amaint%2Fv1.9) |\n| **v1.8 branch** builds | [![CI Build](https://github.com/libgit2/libgit2/actions/workflows/main.yml/badge.svg?branch=maint%2Fv1.8\u0026event=push)](https://github.com/libgit2/libgit2/actions/workflows/main.yml?query=event%3Apush+branch%3Amaint%2Fv1.8) [![Experimental Features](https://github.com/libgit2/libgit2/actions/workflows/experimental.yml/badge.svg?branch=maint%2Fv1.8)](https://github.com/libgit2/libgit2/actions/workflows/experimental.yml?query=event%3Apush+branch%3Amaint%2Fv1.8) |\n| **Nightly** builds | [![Nightly Build](https://github.com/libgit2/libgit2/actions/workflows/nightly.yml/badge.svg?branch=main\u0026event=schedule)](https://github.com/libgit2/libgit2/actions/workflows/nightly.yml) [![Coverity Scan Status](https://scan.coverity.com/projects/639/badge.svg)](https://scan.coverity.com/projects/639) |\n\n`libgit2` is a portable, pure C implementation of the Git core methods\nprovided as a linkable library with a solid API, allowing to build Git\nfunctionality into your application.\n\n`libgit2` is used in a variety of places, from GUI clients to hosting\nproviders (\"forges\") and countless utilities and applications in\nbetween. Because it's written in C, it can be made available to any\nother programming language through \"bindings\", so you can use it in\n[Ruby](https://github.com/libgit2/rugged),\n[.NET](https://github.com/libgit2/libgit2sharp),\n[Python](http://www.pygit2.org/),\n[Node.js](http://nodegit.org),\n[Rust](https://github.com/rust-lang/git2-rs), and more.\n\n`libgit2` is licensed under a **very permissive license** (GPLv2 with\na special Linking Exception). This means that you can link against\nthe library with any kind of software without making that software\nfall under the GPL. Changes to libgit2 would still be covered under\nits GPL license.\n\nTable of Contents\n=================\n\n* [Using libgit2](#using-libgit2)\n* [Quick Start](#quick-start)\n* [Getting Help](#getting-help)\n* [What It Can Do](#what-it-can-do)\n* [Optional dependencies](#optional-dependencies)\n* [Initialization](#initialization)\n* [Threading](#threading)\n* [Conventions](#conventions)\n* [Building libgit2 - Using CMake](#building-libgit2---using-cmake)\n    * [Building](#building)\n    * [Installation](#installation)\n    * [Advanced Usage](#advanced-usage)\n    * [Compiler and linker options](#compiler-and-linker-options)\n    * [macOS](#macos)\n    * [iOS](#ios)\n    * [Android](#android)\n    * [MinGW](#mingw)\n* [Language Bindings](#language-bindings)\n* [How Can I Contribute?](#how-can-i-contribute)\n* [License](#license)\n\nUsing libgit2\n=============\n\nMost of these instructions assume that you're writing an application\nin C and want to use libgit2 directly.  If you're _not_ using C,\nand you're writing in a different language or platform like .NET,\nNode.js, or Ruby, then there is probably a\n\"[language binding](#language-bindings)\" that you can use to take care\nof the messy tasks of calling into native code.\n\nBut if you _do_ want to use libgit2 directly - because you're building\nan application in C - then you may be able use an existing binary.\nThere are packages for the\n[vcpkg](https://github.com/Microsoft/vcpkg) and\n[conan](https://conan.io/center/recipes/libgit2)\npackage managers.  And libgit2 is available in \n[Homebrew](https://formulae.brew.sh/formula/libgit2) and most Linux\ndistributions.\n\nHowever, these versions _may_ be outdated and we recommend using the\nlatest version if possible.  Thankfully libgit2 is not hard to compile.\n\nQuick Start\n===========\n\n**Prerequisites** for building libgit2:\n\n1. [CMake](https://cmake.org/), and is recommended to be installed into\n   your `PATH`.\n2. [Python](https://www.python.org) is used by our test framework, and\n   should be installed into your `PATH`.\n3. C compiler: libgit2 is C90 and should compile on most compilers.\n   * Windows: Visual Studio is recommended\n   * Mac: Xcode is recommended\n   * Unix: gcc or clang is recommended.\n\n**Build**\n\n1. Create a build directory beneath the libgit2 source directory,\n   and change into it: `mkdir build \u0026\u0026 cd build`\n2. Create the cmake build environment: `cmake ..`\n3. Build libgit2: `cmake --build .`\n\nTrouble with these steps?  Read our [troubleshooting guide](docs/troubleshooting.md).\nMore detailed build guidance is available below.\n\nGetting Help\n============\n\n**Chat with us**\n\n- via IRC: join [#libgit2](https://web.libera.chat/#libgit2) on\n  [libera](https://libera.chat).\n- via Slack: visit [slack.libgit2.org](http://slack.libgit2.org/)\n  to sign up, then join us in `#libgit2`\n\n**Getting Help**\n\nIf you have questions about the library, please be sure to check out the\n[API documentation](https://libgit2.org/libgit2/).  If you still have\nquestions, reach out to us on Slack or post a question on \n[StackOverflow](http://stackoverflow.com/questions/tagged/libgit2)\n(with the `libgit2` tag).\n\n**Reporting Bugs**\n\nPlease open a [GitHub Issue](https://github.com/libgit2/libgit2/issues)\nand include as much information as possible.  If possible, provide\nsample code that illustrates the problem you're seeing.  If you're\nseeing a bug only on a specific repository, please provide a link to\nit if possible.\n\nWe ask that you not open a GitHub Issue for help, only for bug reports.\n\n**Reporting Security Issues**\n\nPlease have a look at SECURITY.md.\n\nWhat It Can Do\n==============\n\nlibgit2 provides you with the ability to manage Git repositories in the\nprogramming language of your choice.  It's used in production to power many\napplications including GitHub.com, Plastic SCM and Azure DevOps.\n\nIt does not aim to replace the git tool or its user-facing commands. Some\nAPIs resemble the plumbing commands as those align closely with the\nconcepts of the Git system, but most commands a user would type are out\nof scope for this library to implement directly.\n\nThe library provides:\n\n* SHA conversions, formatting and shortening\n* abstracted ODB backend system\n* commit, tag, tree and blob parsing, editing, and write-back\n* tree traversal\n* revision walking\n* index file (staging area) manipulation\n* reference management (including packed references)\n* config file management\n* high level repository management\n* thread safety and reentrancy\n* descriptive and detailed error messages\n* ...and more (over 175 different API calls)\n\nAs libgit2 is purely a consumer of the Git system, we have to\nadjust to changes made upstream. This has two major consequences:\n\n* Some changes may require us to change provided interfaces. While\n  we try to implement functions in a generic way so that no future\n  changes are required, we cannot promise a completely stable API.\n* As we have to keep up with changes in behavior made upstream, we\n  may lag behind in some areas. We usually to document these\n  incompatibilities in our issue tracker with the label \"git change\".\n\nOptional dependencies\n=====================\n\nWhile the library provides git functionality with very few\ndependencies, some recommended dependencies are used for performance\nor complete functionality.\n\n- Hash generation: Git uses SHA1DC (collision detecting SHA1) for\n  its default hash generation. SHA256 support is experimental, and\n  optimized support is provided by system libraries on macOS and\n  Windows, or by the HTTPS library on Unix systems when available.\n- Threading: is provided by the system libraries on Windows, and\n  pthreads on Unix systems.\n- HTTPS: is provided by the system libraries on macOS and Windows,\n  or by OpenSSL or mbedTLS on other Unix systems.\n- SSH: is provided by [libssh2](https://libssh2.org/) or by invoking\n  [OpenSSH](https://www.openssh.com).\n- Unicode: is provided by the system libraries on Windows and macOS.\n\nInitialization\n===============\n\nThe library needs to keep track of some global state. Call\n\n    git_libgit2_init();\n\nbefore calling any other libgit2 functions. You can call this function many times. A matching number of calls to\n\n    git_libgit2_shutdown();\n\nwill free the resources.  Note that if you have worker threads, you should\ncall `git_libgit2_shutdown` *after* those threads have exited.  If you\nrequire assistance coordinating this, simply have the worker threads call\n`git_libgit2_init` at startup and `git_libgit2_shutdown` at shutdown.\n\nThreading\n=========\n\nSee [threading](docs/threading.md) for information\n\nConventions\n===========\n\nSee [conventions](docs/conventions.md) for an overview of the external\nand internal API/coding conventions we use.\n\nBuilding libgit2 - Using CMake\n==============================\n\nBuilding\n--------\n\n`libgit2` builds cleanly on most platforms without any external\ndependencies as a requirement. `libgit2` is built using\n[CMake](\u003chttps://cmake.org/\u003e) (version 2.8 or newer) on all platforms.\n\nOn most systems you can build the library using the following commands\n\n\t$ mkdir build \u0026\u0026 cd build\n\t$ cmake ..\n\t$ cmake --build .\n\nTo include the examples in the build, use `cmake -DBUILD_EXAMPLES=ON ..`\ninstead of `cmake ..`. The built executable for the examples can then\nbe found in `build/examples`, relative to the toplevel directory.\n\nAlternatively you can point the CMake GUI tool to the CMakeLists.txt file and generate platform specific build project or IDE workspace.\n\nIf you're not familiar with CMake, [a more detailed explanation](https://preshing.com/20170511/how-to-build-a-cmake-based-project/) may be helpful.\n\nAdvanced Options\n----------------\n\nYou can specify a number of options to `cmake` that will change the\nway `libgit2` is built. To use this, specify `-Doption=value` during\nthe initial `cmake` configuration. For example, to enable SHA256\ncompatibility:\n\n\t$ mkdir build \u0026\u0026 cd build\n\t$ cmake -DEXPERIMENTAL_SHA256=ON ..\n\t$ cmake --build .\n\nlibgit2 options:\n\n* `EXPERIMENTAL_SHA256=ON`: turns on SHA256 compatibility; note that\n  this is an API-incompatible change, hence why it is labeled\n  \"experimental\"\n\nBuild options:\n\n* `BUILD_EXAMPLES=ON`: builds the suite of example code\n* `BUILD_FUZZERS=ON`: builds the fuzzing suite\n* `ENABLE_WERROR=ON`: build with `-Werror` or the equivalent, which turns\n  compiler warnings into errors in the libgit2 codebase (but not its\n  dependencies)\n\nDependency options:\n\n* `USE_SSH=type`: enables SSH support and optionally selects the provider;\n  `type` can be set to `libssh2` or `exec` (which will execute an external\n  OpenSSH command). `ON` implies `libssh2`; defaults to `OFF`.\n* `USE_HTTPS=type`: enables HTTPS support and optionally selects the\n  provider; `type` can be set to `OpenSSL`, `OpenSSL-Dynamic` (to not\n  link against OpenSSL, but load it dynamically), `SecureTransport`,\n  `Schannel` or `WinHTTP`; the default is `SecureTransport` on macOS,\n  `WinHTTP` on Windows, and whichever of `OpenSSL` or `mbedTLS` is\n  detected on other platforms. Defaults to `ON`.\n* `USE_SHA1=type`: selects the SHA1 mechanism to use; `type` can be set\n  to `CollisionDetection`, `HTTPS` to use the system or HTTPS provider,\n  or one of `OpenSSL`, `OpenSSL-Dynamic`, `OpenSSL-FIPS` (to use FIPS\n  compliant routines in OpenSSL), `CommonCrypto`, or `Schannel`.\n  Defaults to `CollisionDetection`. This option is retained for\n  backward compatibility and should not be changed.\n* `USE_SHA256=type`: selects the SHA256 mechanism to use; `type` can be\n  set to `HTTPS` to use the system or HTTPS driver, `builtin`, or one of\n  `OpenSSL`, `OpenSSL-Dynamic`, `OpenSSL-FIPS` (to use FIPS compliant\n  routines in OpenSSL), `CommonCrypto`, or `Schannel`. Defaults to `HTTPS`.\n* `USE_GSSAPI=\u003con/off\u003e`: enables GSSAPI for SPNEGO authentication on\n  Unix. Defaults to `OFF`.\n* `USE_HTTP_PARSER=type`: selects the HTTP Parser; either `http-parser`\n  for an external\n  [`http-parser`](https://github.com/nodejs/http-parser) dependency,\n  `llhttp` for an external [`llhttp`](https://github.com/nodejs/llhttp)\n  dependency, or `builtin`. Defaults to `builtin`.\n* `REGEX_BACKEND=type`: selects the regular expression backend to use;\n  one of `regcomp_l`, `pcre2`, `pcre`, `regcomp`, or `builtin`. The\n  default is to use `regcomp_l` where available, PCRE if found, otherwise,\n  to use the builtin.\n* `USE_BUNDLED_ZLIB=type`: selects the bundled zlib; either `ON` or `OFF`.\n  Defaults to using the system zlib if available, falling back to the\n  bundled zlib.\n\nLocating Dependencies\n---------------------\n\nThe `libgit2` project uses `cmake` since it helps with cross-platform\nprojects, especially those with many dependencies. If your dependencies\nare in non-standard places, you may want to use the `_ROOT_DIR` options\nto specify their location. For example, to specify an OpenSSL location:\n\n\t$ cmake -DOPENSSL_ROOT_DIR=/tmp/openssl-3.3.2 ..\n\nSince these options are general to CMake, their\n[documentation](https://cmake.org/documentation/) may be helpful. If\nyou have questions about dependencies, please [contact us](#getting-help).\n\nRunning Tests\n-------------\n\nOnce built, you can run the tests from the `build` directory with the command\n\n\t$ ctest -V\n\nAlternatively you can run the test suite directly using,\n\n\t$ ./libgit2_tests\n\nInvoking the test suite directly is useful because it allows you to execute\nindividual tests, or groups of tests using the `-s` flag.  For example, to\nrun the index tests:\n\n\t$ ./libgit2_tests -sindex\n\nTo run a single test named `index::racy::diff`, which corresponds to\nthe test function\n[`test_index_racy__diff`](https://github.com/libgit2/libgit2/blob/main/tests/index/racy.c#L23):\n\n\t$ ./libgit2_tests -sindex::racy::diff\n\nThe test suite will print a `.` for every passing test, and an `F` for any\nfailing test.  An `S` indicates that a test was skipped because it is not\napplicable to your platform or is particularly expensive.\n\n**Note:** There should be _no_ failing tests when you build an unmodified\nsource tree from a [release](https://github.com/libgit2/libgit2/releases),\nor from the [main branch](https://github.com/libgit2/libgit2/tree/main).\nPlease contact us or\n[open an issue](https://github.com/libgit2/libgit2/issues)\nif you see test failures.\n\nInstallation\n------------\n\nTo install the library you can specify the install prefix by setting:\n\n\t$ cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix\n\t$ cmake --build . --target install\n\nAdvanced Usage\n--------------\n\nFor more advanced use or questions about CMake please read the\n[CMake FAQ](https://cmake.org/Wiki/CMake_FAQ).\n\nThe following CMake variables are declared:\n\n- `CMAKE_INSTALL_BINDIR`: Where to install binaries to.\n- `CMAKE_INSTALL_LIBDIR`: Where to install libraries to.\n- `CMAKE_INSTALL_INCLUDEDIR`: Where to install headers to.\n- `BUILD_SHARED_LIBS`: Build libgit2 as a Shared Library (defaults to ON)\n- `BUILD_TESTS`: Build the unit and integration test suites (defaults to ON)\n- `USE_THREADS`: Build libgit2 with threading support (defaults to ON)\n\nTo list all build options and their current value, you can do the\nfollowing:\n\n\t# Create and set up a build directory\n\t$ mkdir build \u0026\u0026 cd build\n\t$ cmake ..\n\n\t# List all build options and their values\n\t$ cmake -L\n\nCompiler and linker options\n---------------------------\n\nThere are several options that control the behavior of the compiler and\nlinker. These flags may be useful for cross-compilation or specialized\nsetups.\n\n- `CMAKE_C_FLAGS`: Set your own compiler flags\n- `CMAKE_C_STANDARD`: the C standard to compile against; defaults to `C90`\n- `CMAKE_C_EXTENSIONS`: whether compiler extensions are supported; defaults to `OFF`\n- `CMAKE_FIND_ROOT_PATH`: Override the search path for libraries\n- `ZLIB_LIBRARY`, `OPENSSL_SSL_LIBRARY` AND `OPENSSL_CRYPTO_LIBRARY`:\nTell CMake where to find those specific libraries\n- `LINK_WITH_STATIC_LIBRARIES`: Link only with static versions of\nsystem libraries\n\nmacOS\n-------\n\nIf you'd like to work with Xcode, you can generate an Xcode project with \"-G Xcode\".\n\n\t# Create and set up a build directory\n\t$ mkdir build \u0026\u0026 cd build\n\t$ cmake -G Xcode ..\n\n\u003e [!TIP]\n\u003e Universal binary support:\n\u003e \n\u003e If you want to build a universal binary for macOS 11.0+, CMake sets it\n\u003e all up for you if you use `-DCMAKE_OSX_ARCHITECTURES=\"x86_64;arm64\"`\n\u003e when configuring.\n\u003e \n\u003e [Deprecated] If you want to build a universal binary for Mac OS X\n\u003e (10.4.4 ~ 10.6), CMake sets it all up for you if you use\n\u003e `-DCMAKE_OSX_ARCHITECTURES=\"i386;x86_64\"` when configuring.\n\niOS\n-------\n\n1. Get an iOS cmake toolchain File:\n\nYou can use a pre-existing toolchain file like [ios-cmake](https://github.com/leetal/ios-cmake) or write your own.\n\n2. Specify the toolchain and system Name:\n\n- The CMAKE_TOOLCHAIN_FILE variable points to the toolchain file for iOS.\n- The CMAKE_SYSTEM_NAME should be set to iOS.\n\n3. Example Command:\n\nAssuming you're using the ios-cmake toolchain, the command might look like this:\n\n```\ncmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=path/to/ios.toolchain.cmake -DCMAKE_SYSTEM_NAME=iOS -DPLATFORM=OS64 ..\n```\n\n4. Build the Project:\n\nAfter generating the project, open the .xcodeproj file in Xcode, select your iOS device or simulator as the target, and build your project.\n\nAndroid\n-------\n\nExtract toolchain from NDK using, `make-standalone-toolchain.sh` script.\nOptionally, crosscompile and install OpenSSL inside of it. Then create CMake\ntoolchain file that configures paths to your crosscompiler (substitute `{PATH}`\nwith full path to the toolchain):\n\n\tSET(CMAKE_SYSTEM_NAME Linux)\n\tSET(CMAKE_SYSTEM_VERSION Android)\n\n\tSET(CMAKE_C_COMPILER   {PATH}/bin/arm-linux-androideabi-gcc)\n\tSET(CMAKE_CXX_COMPILER {PATH}/bin/arm-linux-androideabi-g++)\n\tSET(CMAKE_FIND_ROOT_PATH {PATH}/sysroot/)\n\n\tSET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n\tSET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n\tSET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n\nAdd `-DCMAKE_TOOLCHAIN_FILE={pathToToolchainFile}` to cmake command\nwhen configuring.\n\nMinGW\n-----\n\nIf you want to build the library in MinGW environment with SSH support\nenabled, you may need to pass\n`-DCMAKE_LIBRARY_PATH=\"${MINGW_PREFIX}/${MINGW_CHOST}/lib/\"` flag\nto CMake when configuring. This is because CMake cannot find the\nWin32 libraries in MinGW folders by default and you might see an\nerror message stating that CMake could not resolve `ws2_32` library\nduring configuration.\n\nAnother option would be to install `msys2-w32api-runtime` package before\nconfiguring. This package installs the Win32 libraries into `/usr/lib`\nfolder which is by default recognized as the library path by CMake.\nPlease note though that this package is meant for MSYS subsystem which\nis different from MinGW.\n\nLanguage Bindings\n==================================\n\nHere are the bindings to libgit2 that are currently available:\n\n* C++\n    * libqgit2, Qt bindings \u003chttps://projects.kde.org/projects/playground/libs/libqgit2/repository/\u003e\n* Chicken Scheme\n    * chicken-git \u003chttps://wiki.call-cc.org/egg/git\u003e\n* D\n    * dlibgit \u003chttps://github.com/s-ludwig/dlibgit\u003e\n* Delphi\n    * GitForDelphi \u003chttps://github.com/libgit2/GitForDelphi\u003e\n    * libgit2-delphi \u003chttps://github.com/todaysoftware/libgit2-delphi\u003e\n* Erlang\n    * Geef \u003chttps://github.com/carlosmn/geef\u003e\n* Go\n    * git2go \u003chttps://github.com/libgit2/git2go\u003e\n* GObject\n    * libgit2-glib \u003chttps://wiki.gnome.org/Projects/Libgit2-glib\u003e\n* Guile\n\t* Guile-Git \u003chttps://gitlab.com/guile-git/guile-git\u003e\n* Haskell\n    * hgit2 \u003chttps://github.com/jwiegley/gitlib\u003e\n* Java\n    * Jagged \u003chttps://github.com/ethomson/jagged\u003e\n    * Git24j \u003chttps://github.com/git24j/git24j\u003e\n* Javascript / WebAssembly ( browser and nodejs )\n    * WASM-git \u003chttps://github.com/petersalomonsen/wasm-git\u003e\n* Julia\n    * LibGit2.jl \u003chttps://github.com/JuliaLang/julia/tree/master/stdlib/LibGit2\u003e\n* Lua\n    * luagit2 \u003chttps://github.com/libgit2/luagit2\u003e\n* .NET\n    * libgit2sharp \u003chttps://github.com/libgit2/libgit2sharp\u003e\n* Node.js\n    * nodegit \u003chttps://github.com/nodegit/nodegit\u003e\n* Objective-C\n    * objective-git \u003chttps://github.com/libgit2/objective-git\u003e\n* OCaml\n    * ocaml-libgit2 \u003chttps://github.com/fxfactorial/ocaml-libgit2\u003e\n* Parrot Virtual Machine\n    * parrot-libgit2 \u003chttps://github.com/letolabs/parrot-libgit2\u003e\n* Perl\n    * Git-Raw \u003chttps://github.com/jacquesg/p5-Git-Raw\u003e\n* Pharo Smalltalk\n    * libgit2-pharo-bindings \u003chttps://github.com/pharo-vcs/libgit2-pharo-bindings\u003e\n* PHP\n    * php-git2 \u003chttps://github.com/RogerGee/php-git2\u003e\n* Python\n    * pygit2 \u003chttps://github.com/libgit2/pygit2\u003e\n* R\n    * gert \u003chttps://docs.ropensci.org/gert\u003e\n    * git2r \u003chttps://github.com/ropensci/git2r\u003e\n* Ruby\n    * Rugged \u003chttps://github.com/libgit2/rugged\u003e\n* Rust\n    * git2-rs \u003chttps://github.com/rust-lang/git2-rs\u003e\n* Swift\n    * SwiftGit2 \u003chttps://github.com/SwiftGit2/SwiftGit2\u003e\n* Tcl\n    * lg2 \u003chttps://github.com/apnadkarni/tcl-libgit2\u003e\n* Vala\n    * libgit2.vapi \u003chttps://github.com/apmasell/vapis/blob/master/libgit2.vapi\u003e\n\nIf you start another language binding to libgit2, please let us know so\nwe can add it to the list.\n\nHow Can I Contribute?\n==================================\n\nWe welcome new contributors!  We have a number of issues marked as\n[\"up for grabs\"](https://github.com/libgit2/libgit2/issues?q=is%3Aissue+is%3Aopen+label%3A%22up+for+grabs%22)\nand\n[\"easy fix\"](https://github.com/libgit2/libgit2/issues?utf8=✓\u0026q=is%3Aissue+is%3Aopen+label%3A%22easy+fix%22)\nthat are good places to jump in and get started.  There's much more detailed\ninformation in our list of [outstanding projects](docs/projects.md).\n\nPlease be sure to check the [contribution guidelines](docs/contributing.md)\nto understand our workflow, and the libgit2\n[coding conventions](docs/conventions.md).\n\nLicense\n==================================\n\n`libgit2` is under GPL2 **with linking exception**. This means you can\nlink to and use the library from any program, proprietary or open source;\npaid or gratis. However, if you modify libgit2 itself, you must distribute\nthe source to your modified version of libgit2.\n\nSee the [COPYING file](COPYING) for the full license text.\n","funding_links":[],"categories":["C","TODO scan for Android support in followings","其他"],"sub_categories":["网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibgit2%2Flibgit2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibgit2%2Flibgit2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibgit2%2Flibgit2/lists"}