summaryrefslogtreecommitdiffstats
path: root/vendor/libgit2-sys
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
commit10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch)
treebdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/libgit2-sys
parentReleasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff)
downloadrustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz
rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/libgit2-sys')
-rw-r--r--vendor/libgit2-sys/.cargo-checksum.json1
-rw-r--r--vendor/libgit2-sys/CHANGELOG.md123
-rw-r--r--vendor/libgit2-sys/Cargo.toml69
-rw-r--r--vendor/libgit2-sys/LICENSE-APACHE201
-rw-r--r--vendor/libgit2-sys/LICENSE-MIT25
-rw-r--r--vendor/libgit2-sys/build.rs248
-rw-r--r--vendor/libgit2-sys/lib.rs4265
7 files changed, 4932 insertions, 0 deletions
diff --git a/vendor/libgit2-sys/.cargo-checksum.json b/vendor/libgit2-sys/.cargo-checksum.json
new file mode 100644
index 000000000..a7e179111
--- /dev/null
+++ b/vendor/libgit2-sys/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"a9db67e0a20f1b7f61fa0bb65ebe22c8a720e32d2f435ff8aad6e9e2040d092f","Cargo.toml":"8d24c57c33d05c32afc400c51921667b76f4cb1115fb9f738638d33fe4b2ea95","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","build.rs":"d42bc3020803ce02f78cc63dc1e8da2ac0ca76c6639f5b7640f0b6145621b952","lib.rs":"92ec0bd9cf4c126de612eb769efa665e9a3e7622d48de5b1ec027688a25980bb","libgit2/AUTHORS":"d7d4f16a8e4303cc515fd4410b2c64b7ded924b1e8784a125d15195555e986b2","libgit2/CMakeLists.txt":"0c9fbaa97c7873046b218885eddbce8ba8d7944223db98104d7beed35d7e7e25","libgit2/COPYING":"6f3c2cd59b057e366c1acc073b038135c52d77892bb33bd4d931c5369d3f062b","libgit2/README.md":"df28262ab36face428860a9a41cd398b659f9f61f1a9ef50c29448a0f585fd81","libgit2/SECURITY.md":"566da5b3e26904232486c2b7107a1ebb0dc90e8eb2f32b9468d0da41e1cd5543","libgit2/api.docurium":"c77dc54504945864b3270877a9ddcabe85d6d1a742c07232f6faf847958c0dd2","libgit2/cmake/AddCFlagIfSupported.cmake":"4be37a9752e3859c9ab8525f365fcb4392d1e5135ea222795c304b42dcf11b13","libgit2/cmake/AddClarTest.cmake":"022f6d1a498bead384338fd1b17ddcf72ce18d6ce54b6c0298ee3ea61c0d63ea","libgit2/cmake/DefaultCFlags.cmake":"a2b5a645f29bb3be74aea7bf5f5d83a77f68d3190363e83b43f9ba70a41c5963","libgit2/cmake/EnableWarnings.cmake":"f5690cb37a672c92696f618890da93d44eaa07f3cdad9a3515bb08125909ac0f","libgit2/cmake/ExperimentalFeatures.cmake":"5722077113489154402f9ba758aff0e351c47887110e1ec2bb7da3ca50f63652","libgit2/cmake/FindCoreFoundation.cmake":"5f71227384a4914df198dc7766b6b8474942730a16c22de0c987c9548808f1c6","libgit2/cmake/FindGSSAPI.cmake":"6704673fcbc0c94c02395a3e4fd96f41fbe0111397f0f06dd9a912d11c1ddb91","libgit2/cmake/FindGSSFramework.cmake":"136f3282657cd83aa5a9ea4a3d11ffd14d839e637c6e2669aa5f0c0eb9d9daab","libgit2/cmake/FindHTTPParser.cmake":"ca1d95edef14b1e05449d45dcbdd93c386025c408cbf27a00cb4af4ab0d62a7f","libgit2/cmake/FindIconv.cmake":"b11c24e5fe2dd98662f87058eb9439e530f38aab4f27a9d241df48a087e6b4c2","libgit2/cmake/FindLibSSH2.cmake":"0cfe918a5d00dbceeae55ffeb5546f8c5595eb48558c2e9584561db17f29b91f","libgit2/cmake/FindPCRE.cmake":"2b1e7b45cf0410320e706573ecce75b8be4eeda6b9b4fa19893a248c57096a71","libgit2/cmake/FindPCRE2.cmake":"d8045c217a1856963badd52548406cab2881d2ae304608d6b40bd77bcb590f0e","libgit2/cmake/FindPkgLibraries.cmake":"e50a58f9d39ed58d5bfc39e6f18066b436cf92ccabd6683fed4f30cee9689627","libgit2/cmake/FindSecurity.cmake":"1c16ac77018f28efac83cd848c130d5127c22999dc48efe44bc8ee9b501deb29","libgit2/cmake/FindStatNsec.cmake":"4b3bb2337ce205580703704a2725eba085044810d54a0e0cc5680b6f71eb494f","libgit2/cmake/Findfutimens.cmake":"281fa0a75648482e3b13841d92db2c5332147fa8c7f96afe7ee11eae77a6bfd3","libgit2/cmake/FindmbedTLS.cmake":"23d2c96094b525b7a333427776cf51f0a1466a70d9358af48c8d851e20ebad64","libgit2/cmake/IdeSplitSources.cmake":"0c1725438bac95a6c56627408b81017a88748944b0ff83cc45c0824421e3aeee","libgit2/cmake/PkgBuildConfig.cmake":"fdf17c32ee3621b671695f29a1373f4e2d05606dad03a658a751e94a37385f91","libgit2/cmake/SanitizeBool.cmake":"6d93d776331f1cc9d4052ed53731789d6e141bba9ac8681dba70a80abb2cdc00","libgit2/cmake/SelectGSSAPI.cmake":"12bf9cc930b90c913906982979d84a3c6fc31afd439583779c408b525e57c6bb","libgit2/cmake/SelectHTTPParser.cmake":"1258d26dd0a1a23c37f02d8f8cdaa58e5e1fe4a6ad71863e1a573faff4abdbbd","libgit2/cmake/SelectHTTPSBackend.cmake":"3e945fb0ae9fad47b50046d5457522668dd106a3dd81464d723e1a969c0a1a22","libgit2/cmake/SelectHashes.cmake":"1686299ea6802989778176b4d37d86297a62a0200dcf3c25b394c4130e3966b4","libgit2/cmake/SelectRegex.cmake":"6c32e01fec5c3bc099a3b20fd10a08ce1594fcdccee2cd3f9386f6f7d77a9c82","libgit2/cmake/SelectSSH.cmake":"d913763a6342d50c49a2c42a4bd77dc3fc530c70bac193b34cbfe74b7c83ce8b","libgit2/cmake/SelectWinHTTP.cmake":"2916180fa2c0aa79f65866e5b0ff5b1c560cd4e0cd1b8a5162d401b660b4b6c9","libgit2/cmake/SelectZlib.cmake":"fa08bea6c807ac97f1790ca46590a4f7d63570e1b51e76240483f5cc4762e3a9","libgit2/deps/chromium-zlib/CMakeLists.txt":"f8c70a5cede31712527ba84f3eb0c0a8319cbf7643c6afb63c1fdfbed1e757d7","libgit2/deps/http-parser/CMakeLists.txt":"f3fb5bb432aa7267ce9f6aee3780346ee6d0899154a3f05a1e57eb13bc5a1822","libgit2/deps/http-parser/COPYING":"2996a1c43ee757f9c997a829d82bdd584052323e73cf02ff8126c6fbd95c2d87","libgit2/deps/http-parser/http_parser.c":"80930f8b6c15827a3ae571e77ddbdccca366e8f6c98874062cb8c0c6dc877ee2","libgit2/deps/http-parser/http_parser.h":"d3fd211486e4352f57a47e856a5a10dfce06c46211119d0f6d9935713d2ad08a","libgit2/deps/ntlmclient/CMakeLists.txt":"d9ad80e8716dedc9bfc89a802df29127f010e95fded200b67a8809e0aa12621d","libgit2/deps/ntlmclient/compat.h":"f27a8e91c75ed75a71140c597548b43fae19b28eda1a09ab28e367a196bdad84","libgit2/deps/ntlmclient/crypt.h":"38647af40b21a8baf2c2e73e80ff631718b7fb0db51b0c2079d4bc85793a2032","libgit2/deps/ntlmclient/crypt_commoncrypto.c":"445b2f9d8f2cc820515d0bdf262d699e635061c81c2d617d7e3da9780817f7a9","libgit2/deps/ntlmclient/crypt_commoncrypto.h":"55a6fe82280421e5fd61f20be1938cc92efef1a211147072790eecc91eb87e6f","libgit2/deps/ntlmclient/crypt_mbedtls.c":"162fa2759c1073ce61a6bc2e7898a8c8557b8b4cda1191fca8af75200d971cc0","libgit2/deps/ntlmclient/crypt_mbedtls.h":"d10c8dee39844ad68a6f408d4134300b984279da9dfb9c7ff070a7065e5ecc26","libgit2/deps/ntlmclient/crypt_openssl.c":"ada5b18064c3dd95c4aa352103096c5a24fd6c843f3995c236be7a45a52c5fc0","libgit2/deps/ntlmclient/crypt_openssl.h":"8c87194b5fd0220f4b40ec5ddaed151c8a189a157ed3b3ab3595f5358cf4a62d","libgit2/deps/ntlmclient/ntlm.c":"98556b43c4e8cc3b2559c86c447d0df02338ce949dc84a691ecef9900cbedb2c","libgit2/deps/ntlmclient/ntlm.h":"5328219af7251999ea78a2d2d648a6d98943af7ace5fbce0d8cb5ad4b0bb4c60","libgit2/deps/ntlmclient/ntlmclient.h":"fa223a164392f53822703c80dfb1299d3483bab3b9ad02fec1058a0f50a55eca","libgit2/deps/ntlmclient/unicode.h":"ddb0cbb25cca1a2f413865070fd47c354f87caf66f868022dd288b90fe93711d","libgit2/deps/ntlmclient/unicode_builtin.c":"3bafcf95dd5c6b3ea3d54d7b24e7333c4af13f6051922d6f27cb6497f9962329","libgit2/deps/ntlmclient/unicode_builtin.h":"fb1674d49fc240f33d8120fea10504021a61f69967d933ed386d57d0b267127a","libgit2/deps/ntlmclient/unicode_iconv.c":"45f30469fa188781f5b61a645368d9fd9249f5c9d8aa8512708e98b242259f5a","libgit2/deps/ntlmclient/unicode_iconv.h":"7dd5cfe97dbbbcec94f3e1dcd6edf51785f6eb5510ef96607fce45ce1cc818a3","libgit2/deps/ntlmclient/utf8.h":"0b57540746cfe500009216ba3bb7bcbd1555c158648ec82fe26f16bef75adb97","libgit2/deps/ntlmclient/util.c":"94ec747cd810c90ccc966688d89ef8dbfb91e41aea2f665a13db5fa18ac26443","libgit2/deps/ntlmclient/util.h":"3b15e99337fa1555fd99b2434894cdef7c0ea96167f7b4ff4ae772a1d0982bb8","libgit2/deps/pcre/CMakeLists.txt":"1d4158a8b4f8f380e93c5764c8fa8c1820c0b517ad8f40d47084a06975bec6a7","libgit2/deps/pcre/COPYING":"17abe1dbb92b21ab173cf9757dd57b0b15cd8d863b2ccdef635fdbef03077fb0","libgit2/deps/pcre/LICENCE":"0dd9c13864dbb9ee4d77a1557e96be29b2d719fb6584192ee36611aae264c4a3","libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS":"46cde7dc11e64c78d650b4851b88f6704b4665ff60f22a1caf68ceb15e217e5b","libgit2/deps/pcre/cmake/FindEditline.cmake":"44788ac3e7c8c4b4da3e5e0f467c7ee49de7ba9e1c13024dcf1e2501f8fe9684","libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake":"aa3ef1f1c8742da54813aab0ac58c71edd1e58cd3b6b157b856bfd525adc2e5d","libgit2/deps/pcre/cmake/FindReadline.cmake":"055e1df8bd29e6837d8ebb8c15dd5dcb28c88e23aabda8538b76a249dff829b0","libgit2/deps/pcre/config.h.in":"480e3e1a1eea810516e59f19375575e83f62980d20b9cfc990ecf8e8cb17f79f","libgit2/deps/pcre/pcre.h":"885609063157d6eb0e3c74af413b608dcd60a94efa023319648a7a8a6e4daa20","libgit2/deps/pcre/pcre_byte_order.c":"4030a1156da8690352226b5de2c9c5f52cc6955409e4a7ab9ba4d6b223e74b3c","libgit2/deps/pcre/pcre_chartables.c":"3386fd60b4a4175a7baf474223522540abd6e006e8507a04d3485f84973424ae","libgit2/deps/pcre/pcre_compile.c":"74526b16f6683efd56742a6cacf31ec1d55dfd8a9fc04f66df59e5e1fbb4354b","libgit2/deps/pcre/pcre_config.c":"fb9e1e766291b2b4b3066ecfd0795db398762b9597fb2af23cc784617984609e","libgit2/deps/pcre/pcre_dfa_exec.c":"1cbf3a680388110bddff833983d3653630eedf6e6e9d9e656a737e3b85de9dd0","libgit2/deps/pcre/pcre_exec.c":"2a6871b9a56de682ce28a467d26b42caf71f4323e44b555db720cd51c0f2c505","libgit2/deps/pcre/pcre_fullinfo.c":"a84fc4cb4d22b2ddfcd4d0f0a0ff333cc9f623e1fbf2a7c90623a212e0bde54d","libgit2/deps/pcre/pcre_get.c":"c93ded768f96cc392f911776e6d993b565114936e08247dfa79080b35dada4e7","libgit2/deps/pcre/pcre_globals.c":"8b2fda23b42715eff2f01188c4911dd8453868ff77fccfe34b99126aa775fa5d","libgit2/deps/pcre/pcre_internal.h":"f713de1fa2c20b5414f6746c80d10878ab48c9186462b074c5bb6a74a822fa80","libgit2/deps/pcre/pcre_jit_compile.c":"76ed39027b25f2bdab581c0bb12b95fa3659baa53c81e10f8f17819d6255199b","libgit2/deps/pcre/pcre_maketables.c":"8564fab861c7eb4037ffcd53fda789a747a30c4a462f460a5ef824f534fb06dc","libgit2/deps/pcre/pcre_newline.c":"3163ed2193fa74d8cc9e1db2bba672bcebf8efe85c2465cc0aefda51966bd929","libgit2/deps/pcre/pcre_ord2utf8.c":"fa926e32ae8d6e5610c500e7b6971a5149765a1881f798b18904a0a88bf549de","libgit2/deps/pcre/pcre_printint.c":"71751d151efbe935e9d8bbf58bbe143d617b34acd13d1bf237330c7c7736c422","libgit2/deps/pcre/pcre_refcount.c":"0dd8b7273243545fdafab585890fa12e210cf526030eb6b877325ce89250fa39","libgit2/deps/pcre/pcre_string_utils.c":"b83225f9cf2658654d6a0af01199050f6fb36d903041b33cd4d0c06e762b66df","libgit2/deps/pcre/pcre_study.c":"f5285714b59af9503dacff268cb37ab4944fbdf74a78c5a7b9bc49043a00ba40","libgit2/deps/pcre/pcre_tables.c":"fcdd9f705a7a1640ae5e5e5b7148761fc5e82896d84b1a287dd7e55b8b87eb15","libgit2/deps/pcre/pcre_ucd.c":"b35ad7e532f52c5fb1f4ab1d48f5d80618abff2a115099220d95cd13ac64c346","libgit2/deps/pcre/pcre_valid_utf8.c":"4265abf04c03acba9ea90351da662eb89aaed79e7eef03329ccf030ef28ef907","libgit2/deps/pcre/pcre_version.c":"5bb67c3373a934a2d9263ba9f9fe3cd79e381e6aed8507e5319202330bc5275e","libgit2/deps/pcre/pcre_xclass.c":"b2c3b2c7600e18e562a333df017ee35c69233e9427b866726d944122a9560e28","libgit2/deps/pcre/pcreposix.c":"49e996bbf43cb2d4acec350410ab40f811a9fefe21fc68004c6182a8da884aba","libgit2/deps/pcre/pcreposix.h":"85a6a09b806d8506e5710e9862b6716b2b88761abe0d05aeda5071257537d9c3","libgit2/deps/pcre/ucp.h":"ea98e4eb999d8e777f2ba709e68b5aff7108a4eaa169f4eefa4510056551b724","libgit2/deps/winhttp/CMakeLists.txt":"e9012f9e9812df5a744551a9b57982fe8c8ffbdd3ddf41a8d96e58546fcb72c6","libgit2/deps/winhttp/COPYING.GPL":"d9a8038088df84fde493fa33a0f1e537252eeb9642122aa4b862690197152813","libgit2/deps/winhttp/COPYING.LGPL":"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551","libgit2/deps/winhttp/urlmon.h":"6cdb0f5ce5f0aea2daefc44c4806697ed31ad759f8baa18fb38a5b220ddc7d7f","libgit2/deps/winhttp/winhttp.def":"89601b95ac2515619426ea52ca093fac1a16ef0bfb5586c1385a028947ab6513","libgit2/deps/winhttp/winhttp.h":"a51828d65b1b260a727f596c41cf3257cac2ef6cfebb11726234fd7ccb1537f6","libgit2/deps/winhttp/winhttp64.def":"7cd0bc8dd2c06d288c241d175da06146e940c28d7201fb63de8a75730d09fcd4","libgit2/deps/zlib/CMakeLists.txt":"5d583227eeecfe65a9b59742e128b7bf33f0bcbd8749a17f551ef8b7a4b2671c","libgit2/deps/zlib/COPYING":"864943392878a2479350e12a04f6e8e0ae434b5573bae350823c4d6c4474c755","libgit2/deps/zlib/adler32.c":"d7f1b6e44fee20ab41cef1d650776a039a2348935eb96bcbd294a4096139be3a","libgit2/deps/zlib/crc32.c":"6b136ac32aeda10adeea8e8927b74b52129625e0d5b73b10e5324fdf28c6c572","libgit2/deps/zlib/crc32.h":"9a2223575183ac2ee8a247f20bf3ac066e8bd0140369556bdbdffc777435749e","libgit2/deps/zlib/deflate.c":"26562ff9e6b5fa539e394a1d8355ca350b80567f59d6296973dcf209ee11693d","libgit2/deps/zlib/deflate.h":"0db1b5ef79ca6ba0f508b7b8bdaa11af45c5ebe2c89ab4f1086dc22b963a52fa","libgit2/deps/zlib/gzguts.h":"fa85c9dabe24e42ba95c702870416ff67ecc58906321f8e74b72a50dfd7df400","libgit2/deps/zlib/infback.c":"f8ca8ed0ce4271886efa0ddea45fd1306f2bf0b675748804737f7dfa8552e630","libgit2/deps/zlib/inffast.c":"41d93aefdbfee5455809130af74fcc76cf7259b1aa8b34d0060d14e57463e8bb","libgit2/deps/zlib/inffast.h":"7d8c1c873ce9bc346ad6005bb9d75cce5c6352aaf7395385be216a9452a34908","libgit2/deps/zlib/inffixed.h":"237ba710f090e432b62ebf963bee8b302867e9691406b2d3f8ee89ee7bfef9b0","libgit2/deps/zlib/inflate.c":"a268c9231441898893c0e2212c5304625c88d12371f1c09fcd2b2a7a54d57d43","libgit2/deps/zlib/inflate.h":"e8d4a51b07694bf48cb91979c19974cf6a5ab0b8a09d26ec0d14df349230673e","libgit2/deps/zlib/inftrees.c":"14a07279ef4c2e7c176a3d5571c45fcffb223b327b92e66a0f5c41d52bef8b9e","libgit2/deps/zlib/inftrees.h":"c510b36402784b1f898be3b049b923469aa92701de2d9195aed19f6b65c0dce2","libgit2/deps/zlib/trees.c":"7ca01688547ec147fc1714f475a6146abcd65f5b5806e914038277b4b5dfd8df","libgit2/deps/zlib/trees.h":"bb0a9d3ca88ee00c81adb7c636e73b97085f6ef1b52d6d58edbe2b6dc3adeb4d","libgit2/deps/zlib/zconf.h":"9c0087f31cd45fe4bfa0ca79b51df2c69d67c44f2fbb2223d7cf9ab8d971c360","libgit2/deps/zlib/zlib.h":"1a8c17389c6aaca0a52697c49bb2bfb403527bdd266ce626a331bb03322a2f68","libgit2/deps/zlib/zutil.c":"b5d725d43b43317c2b7c8fcc9622b0c7861f0f963c3da33f0b2c55cfffbcc448","libgit2/deps/zlib/zutil.h":"ae060141efbf6856488e646075e564c33b0fc429ec80f5fc9b1134e967d711a9","libgit2/git.git-authors":"807ee76d5d1f87f87bb4deff8196b7854530521ebe52bde5d52b9e2bb82a75e4","libgit2/include/git2.h":"04b93d6a4dac32d661a56c3ca222ba62e8896f8148774ed52565d631ebf8d0e0","libgit2/include/git2/annotated_commit.h":"b416a1418b38c638cfd331022cf0fd059ec693090ffd29df3e649fbf502605a2","libgit2/include/git2/apply.h":"754163b99c945f1b2481cd6b50e89a66f297ad4a738d54b013620524d207c8c2","libgit2/include/git2/attr.h":"976d36632e3484981d5c7df133e7216a99701162a5c29565c6ee94e22ba8fe7a","libgit2/include/git2/blame.h":"58d6b7ffb8b4039ec75450206366e874c224339b326545ec7de8d7c2e20b99b6","libgit2/include/git2/blob.h":"d75a234addee2f8d5759cb47a80cb6d063b6d83895558538a05d2d3c723fdd6f","libgit2/include/git2/branch.h":"f93416a192759d06673fcaae761f2414bd8156a8b86b4ea5bdeb7e05786c61dd","libgit2/include/git2/buffer.h":"58e37b5487f578ab15472d9d117297fe417f9a4e6e9da1a5d2e185df311f3a00","libgit2/include/git2/cert.h":"1904a8d944de4d1fb6168cf0a4f5f166de7c06721ae9d564d2566927e37c6ae7","libgit2/include/git2/checkout.h":"d25583f792c94f0d2d0f18e890cdaa3d71cde815088d9236bcb08eb910507a3c","libgit2/include/git2/cherrypick.h":"9d55b4dcf4a3db3cc432d9ab60bb6788c5a0a22525f3d2c5c071e6e693df3824","libgit2/include/git2/clone.h":"9467e527a03ef4857e028b8494af6a663ddbc9af8d6503bca603484b9539270c","libgit2/include/git2/commit.h":"a0a545f449737130cd771daa3247bfb73da3fbb59617258de9b0c9b58215ce0b","libgit2/include/git2/common.h":"1d692fd6f88e3d864a3d05a987d13ae7e269e2a067794fe906488e81027c4e8c","libgit2/include/git2/config.h":"6d7364d182f3865d7b5ed7872a86abb56a1aea2b083c91b3c38169b47ff3433f","libgit2/include/git2/cred_helpers.h":"4478aa5e3f82cd754333311939c3c0d5deeff7be636f68e03a7f5b1c5f4bf73b","libgit2/include/git2/credential.h":"068d3e80ab9a5742ba97ca42e8d1c4d122168d7fe38f666848acfb1811884c72","libgit2/include/git2/credential_helpers.h":"efb330eceb6aa54313a1bd69bfbeee05fd4de59bdd0da676dc7a3649df3dddd8","libgit2/include/git2/deprecated.h":"4164bee5f0ff68c5a2e0733777564a7627bf4206cb2a28cdb2595da7ea373969","libgit2/include/git2/describe.h":"7ed1552f3989171af8055ecac535fdaa34dbfa1a63f9622646a1270e522705a5","libgit2/include/git2/diff.h":"2e782b63efc6be39e78c7fa49ebc448e8ff1a1fd880686a8603b08846446266d","libgit2/include/git2/email.h":"6f23dad8044f6a38ae3115022308d27fa4d52e054f53ef275a64fafa8f594d3e","libgit2/include/git2/errors.h":"19ff7353f8f03683a6bd7d25482c496a4b339aa6269730e601ef8bc8dbecadb2","libgit2/include/git2/experimental.h":"11218571e33eaced42fc23331994179c25faaa6bb918a75087afea89d07ae3f0","libgit2/include/git2/filter.h":"2d10cd829385dad197307e82991c7ffab845e588dd0ff025b2a51797721cdd77","libgit2/include/git2/global.h":"88e49fa7593012aa9575df08755b907b5b613f43278f477e9ca8e4feedbe6786","libgit2/include/git2/graph.h":"c0bb3f0ae78d58c9bd23f0c41192f7f14aab09b67bfdb01f46974ab4f2a4df89","libgit2/include/git2/ignore.h":"a8bc1a437e37b6d73e9520023eff88c85c134c19a50b796234c6b884e5e0cef2","libgit2/include/git2/index.h":"ff58b50593a9e5ef0dfc662cf69bb78284902c7d17c058262b1e6c2253b0fd43","libgit2/include/git2/indexer.h":"b593c4d0a00dbaa65023b32d0fe031b0f241e2ba066dc502da269c434a9531aa","libgit2/include/git2/mailmap.h":"4f0d18eb0ab5ffdacdd716a9649319683fb84a33627bb4dfa6fed8aedff55d73","libgit2/include/git2/merge.h":"f66f9f7d13162a9bad2652b4217863e3ef9e59e1dc9cdf7defb84cbcd6d64eff","libgit2/include/git2/message.h":"8e517062c86668c667132deda83fc3cd07f4d07f064a09cb04b586d50c8abde9","libgit2/include/git2/net.h":"aa6ce5cde1a1c0dc586b3ac22bfd68689505d05fd91ee4c128c0225fdc7676ca","libgit2/include/git2/notes.h":"59256cc18452a945e1712c210a957685501448225f57f3ade0a839cb9124fe12","libgit2/include/git2/object.h":"977f12a38a4a0bb381238e6d0b69b6e54b901271c372d8393e759ebaa22ce6c8","libgit2/include/git2/odb.h":"a030aabc986a9e2a01fd4a9075fbbc978f6153d4c0d0c7375897c012900b2714","libgit2/include/git2/odb_backend.h":"6612d3a8399a1fe6c4c6fb08020970349f9f9c531c4db4d22d488076dc1445c7","libgit2/include/git2/oid.h":"be31afc991b99ac1fb9a2b43a7ad6ed43f4a9464b070a96038391d65fc54133d","libgit2/include/git2/oidarray.h":"aaf8e8102afe1f35429c8738976ae1f886c5d831fc2d19737ec3577c901741bb","libgit2/include/git2/pack.h":"a13a500f23e2d37cfb2024d7241e5b0ff91e9d725b6fea1709be5890aa3535fe","libgit2/include/git2/patch.h":"0db799834e35d61733ad636a66e873030721a7b82ea965a42e1039184b9e48c2","libgit2/include/git2/pathspec.h":"78a7fa9ad4b7637e23fb7987ac960584ae2b8b51ec10016f0a75e006f7ab35c4","libgit2/include/git2/proxy.h":"b58b7f080ca56ebdfc51d9807d97c32023c5d3fdbd670a4bb28b81ba842cb87b","libgit2/include/git2/rebase.h":"9635cbd62c80a2ac6f54d9591cd210fadd1feaa5c0e9a08a8e9622c0bdb8eaf2","libgit2/include/git2/refdb.h":"689516e9bc72b8c569800b0100df3c2f3b870158c996ab48c90b8638ef8c251b","libgit2/include/git2/reflog.h":"3f9202628c60cd7ddd15a6d759439b758616ddf542b011b15490077bb4446903","libgit2/include/git2/refs.h":"9fc384e8e3b6151a722985beb69cc58e927e53c39a437413373999d340f45036","libgit2/include/git2/refspec.h":"3fac2002e7bcc36fba7e353e728846423c121520e8caf00836d232493eda2db0","libgit2/include/git2/remote.h":"f8479a944c2c7c3ea25689e0747e76c4c119a96a50a5f83c14a162082375c5c7","libgit2/include/git2/repository.h":"db6e9957980430fabc1a764d2b5f6b77fce5390275124f567313ef29ba7d745e","libgit2/include/git2/reset.h":"29c8b65e30cd7b7274d3fa2c88b95512f03ea6a705e26636026b77685c208efc","libgit2/include/git2/revert.h":"fdc9b2a8106191b36edac31d586375f82257614050b1d75fdcd0066e36da2243","libgit2/include/git2/revparse.h":"dd1295cd373cf0493090123d76d7fffe1f573f5cdae46d4bb48a9ee1cfc94d32","libgit2/include/git2/revwalk.h":"ef5edd2d05eeb4b6d60428d53e1474a1af37348d375c749b3e445f8704df0e87","libgit2/include/git2/signature.h":"8eb48ed252cf68b7d9a3d8dfb183a8474c395cc6bd7abc20e70d9ea728b042d4","libgit2/include/git2/stash.h":"6d6aaea572b2715f38b146834e32f245417ccf1bdfa081a5fef574347cf00566","libgit2/include/git2/status.h":"bc1a3daf6b85aff463645e8ab45bef0d86e2058311282bd8bd97e12d4fcec151","libgit2/include/git2/stdint.h":"ff41f7b6917b7c4955a685a28072e2dc141f626f5f09068e33fbb2e05b866bf1","libgit2/include/git2/strarray.h":"ddf33d3d24246fb9dfd62cca8a201e4077369ef6b3712e12498a4c14ca9a7d14","libgit2/include/git2/submodule.h":"6a8de8e3505de2d2f6dfbf294bf758545649114f977af1dfa0c3fb7980aea99e","libgit2/include/git2/sys/alloc.h":"9a19fb88e2c70146520d63e01778e22938976a4b754e4bb9e487c4d5a2ca486b","libgit2/include/git2/sys/commit.h":"3d1b2220325a82983ecb271c2eb8383a8db134dfc0da96b1f050f3664871252a","libgit2/include/git2/sys/commit_graph.h":"d178cae2b2d36e6b07bb7ec8e3f616ca6db591d207116b946e065f267fca6282","libgit2/include/git2/sys/config.h":"7888b5265f18640820d43f8ffc31e3e6b3153398ee2851d657ae8b28bdcd10a4","libgit2/include/git2/sys/cred.h":"b2ea956401c5554f26cec0f428dd9d0d9661d1ef3d9368769b415193df98ed1a","libgit2/include/git2/sys/credential.h":"8cfe0a41b027f8196f43fd2e81c15bbe1a26ed7c15468711f900dfaad0a3705f","libgit2/include/git2/sys/diff.h":"e341f693acb25645f6ed47c041fc4eda8996a6f1d42905ae4f87fffba22520f3","libgit2/include/git2/sys/email.h":"c90da62e7696a61eed3f21ecb7c9feb39569130746a6bd317e3e82e18c070bcd","libgit2/include/git2/sys/filter.h":"84830316c546511631506cb7b833a1cd39fb9deb76249e2ce6b02c524d00db19","libgit2/include/git2/sys/hashsig.h":"5677f86c02e557c7897e98d395e83d8168c532916ecfb7f9ca5bf7b4057141f4","libgit2/include/git2/sys/index.h":"bc6a371ea47773019e17e5ed5951dbb5b9d773c437d6d49e79e20fa175993c87","libgit2/include/git2/sys/mempack.h":"677bbdd7c613d82cc07966318f133c6ef4101b1a1dbfc0f3b1979a925ae50810","libgit2/include/git2/sys/merge.h":"48bd0d3a80046712287e5c396ca7dd6d81af5cd2e765f96ee89fb298d17a79db","libgit2/include/git2/sys/midx.h":"d191831dd85832e62c3a940370e355dff7e7432fb8d11c27d6698a7e8c4555f6","libgit2/include/git2/sys/odb_backend.h":"406ced987d78cef71cb83d882aae72bd0eba520640f0ce22fd18ecb797de2ef5","libgit2/include/git2/sys/openssl.h":"011d45d1991a7d4467b5de5c574718af5b16198fb1581639845fd8d07bef7758","libgit2/include/git2/sys/path.h":"97adf0e0751e456546c7c0119743e50aa428fad8a29184fcc637db1eaae08b67","libgit2/include/git2/sys/refdb_backend.h":"6be92a5c1b660e4adf99f4604fefc9e93d2e639ae53295b722a1364723d036bb","libgit2/include/git2/sys/reflog.h":"c307ce8e9c8b0483ec45ce34a200f74e1ee73bfea9c4c7b0cc3923e3881360ca","libgit2/include/git2/sys/refs.h":"ee98c1aa0596b1cb409795a94de4891392e1675c42e8877a1e38bd0a5c3fd2d0","libgit2/include/git2/sys/remote.h":"f1f7b7d5cd5baf9caa5d048ef3d63ca5a4a30464e34226a64755863ccddf1134","libgit2/include/git2/sys/repository.h":"63a142623683376fe11f498685525ba33d3cd184708338f2461067b7aa5b92c1","libgit2/include/git2/sys/stream.h":"8555a6a2dc13ddf21cf4e3edc137d5a02cab23f0e73f9f6f7859768af25d11b1","libgit2/include/git2/sys/transport.h":"3b55dcd2d050aac2f18f51eeb924f7b4e500d29ee3313c721403e3d67c27c8e9","libgit2/include/git2/tag.h":"799b7c0726c077e13a1e0a194d98d2605e59ad4800db956e92e7dfc938bf6353","libgit2/include/git2/trace.h":"f9aaff56cd6e6ea2dc5f7e221f198016f7d4a947829340a45c12714bf32f6738","libgit2/include/git2/transaction.h":"4c7969130a952134c597e84a06f38ca4b19e0b372df88085cb4f846292681c5b","libgit2/include/git2/transport.h":"7272a0f8cc321ac012a3fbb8cf4d1be0bc6d34fc266a09b72d604a30ad0a91c5","libgit2/include/git2/tree.h":"b33a83cce6b92d3e4197c1124394431ef2865d0a6978b2dff29fb8f4a9d93106","libgit2/include/git2/types.h":"3dcf1cba9c3724f6adca09a5147e5e9afbfbad873c579314e5a93db55199b3ed","libgit2/include/git2/version.h":"0c20575c323c2298acb017587218816d99d1a8bf4cee179dc78d2c1575171604","libgit2/include/git2/worktree.h":"0f819ee1a2f74433cc54172c86aed43cbc6ca26c9c44794a8fd8c7fc5c5e316d","libgit2/package.json":"bb28107bc0d9249aa90f4e9e73f3f9a56042b9f2e32caec2c94a6bd2e4f1c646","libgit2/script/backport.sh":"6ef93a8c4a15ef74d2639638db3b24d20a76fc31faa53b1c34b07e3759c78fe6","libgit2/script/leaks.sh":"62532838555750cfdbff91709c40b1c1356e399238fc29379a45802922530a51","libgit2/script/release.py":"28a113a377422d7aebab4ce25c672f134ccb8a81cbbcece4d6af4354c44c4711","libgit2/script/sanitizers.supp":"8ac23fc907490c5ba1dd641f97201878e195c3bec0c1f224a9a4dda1fbd1f5b9","libgit2/script/thread-sanitizer.supp":"6497c98a2c0c83d867b0d88c36095a609731e7f6f4ad5a73dfe5287d6f2ba0d2","libgit2/script/user_model.c":"073e0b631f2d50af9c326dc009c626dfb9d31707d36bc61396ad9960160652bf","libgit2/script/user_nodefs.h":"4287333a6d7484a5a5796e6deadea53ec1ef587e4c571351e3fab61cf8badb45","libgit2/script/valgrind.sh":"13d1e34010c351992ac5950dbadf35928eaabfc9ba3acad336e7677fbda0946c","libgit2/script/valgrind.supp":"f959d829f41bd3cdf663a3ec0861ebf98f5c69b4b46005d754d748d7b90d1734","libgit2/src/CMakeLists.txt":"a50e026dec6c17b89345ed2f1f6f500d75da5a422e09143a4ae2a5ff3ee5c54b","libgit2/src/README.md":"acfbe0a4ed6cd7d806b30582cde06b871fe2b16f5a9eec3af717ff819030c6d3","libgit2/src/cli/CMakeLists.txt":"077db6c4b4b45fb9d8282331f51b04fc88e6adcc87bcfa9deb48950d05f869b8","libgit2/src/cli/README.md":"84ea472e6be8c7e14558749a6b9207b8acf45ce78ce2278a525813d6c66c09d8","libgit2/src/cli/cli.h":"a2c8e0f0bfddc539edd3179f23604920ded78f725d753f891ceb029ba64b0a65","libgit2/src/cli/cmd.c":"fa7c4fa3d3178308dc47347c1c0d2c59c242173e01b35e9da1594b6b1a84821d","libgit2/src/cli/cmd.h":"353089987b6c3600eea464e1bec4a181f026bf2389f238bd4064609208ef7306","libgit2/src/cli/cmd_cat_file.c":"96b00ca5ad95464dcb1b82a3896c9c4d3d4a2b3f3cd0dfadffd4486745bca454","libgit2/src/cli/cmd_clone.c":"fb9a318c8dc424cc91e819652941a57d6094208c621e64a74defa8f407b76d6b","libgit2/src/cli/cmd_hash_object.c":"d132b2829d52ce17b2088042ea0b71aafe4291c2e5c29c8ec4af0a0a2adbeb87","libgit2/src/cli/cmd_help.c":"11959d8d9bfe40db63254b576d4c40a6f89459e8a31b1a595fa64362a72db74c","libgit2/src/cli/error.h":"77ae9d6e6b273b433d6f926fc0fe3ead0a608e2d4ea3751a481b07d445cec254","libgit2/src/cli/main.c":"48c96ae62cf75078c95fab55c97a87119fc20ad30aacbcbf3a3f9e2acbec3655","libgit2/src/cli/opt.c":"d0741d9f87a067deec0d1196a8b32c98f67fb04854585040d68b9f8ea8c679a1","libgit2/src/cli/opt.h":"21e0fa46e11bc7ec8de209cafa30d944c5157da9187cb66990f81fe1a8975a76","libgit2/src/cli/opt_usage.c":"0eb8e704b234dd955ad33798e330c083a4a5114347040ba949235003b17a6f92","libgit2/src/cli/opt_usage.h":"a9234a8277001d8a0252b3e9b73c581bbfe64fb209eef565dd082beba81b3053","libgit2/src/cli/progress.c":"fc583205433555e1077264e179900b4c960c2d50af2569637794f9d25c5f6052","libgit2/src/cli/progress.h":"b1886426d2ce266c3da212bbb2a658df9c386c5e297b9e760464cf51081548bb","libgit2/src/cli/sighandler.h":"4ebd5db9e9368f8001bffd2e43f8cd7e2ba7428d0a56eea8255c1d1252c50d88","libgit2/src/cli/unix/sighandler.c":"53756df33d9012aa71887555c53bed6c33bb31a9f8b7412632729bd6744b9dc1","libgit2/src/cli/win32/precompiled.c":"4dff04101bd64b95c8f708d1accd1bedc39e95a263444290f796c63f4734d4cd","libgit2/src/cli/win32/precompiled.h":"7f9896201b1ed335a630010def126430d3c9f718c180b2c0ea0865e4d8611297","libgit2/src/cli/win32/sighandler.c":"bedb324d57b3ff2e6d6ba2a2a46b6f8e67a81186f3c729ea9f3b2771ec9b6450","libgit2/src/libgit2/CMakeLists.txt":"7046994352295550682a882c4f2a3162e4c4053180e41011e155b8554f2c7ba4","libgit2/src/libgit2/annotated_commit.c":"9ebaf708627827d962d8d62c9a99aeef4d25deb2a3ca164e42ba9f06c4698523","libgit2/src/libgit2/annotated_commit.h":"62a8082e5bb974b9fc6c4208e686ea66fc456749e751e2aee68c76e4760370c0","libgit2/src/libgit2/apply.c":"e838bc8c4a33e86c855d3905c8fd500b9f82c5225ef8ae7bd5def24f106d3e30","libgit2/src/libgit2/apply.h":"4b3cccfd8030ab006fe78a89bd6ded5e1d89f7122630da6efa792c1a5b6874ae","libgit2/src/libgit2/attr.c":"cbeaadd990153f473ba27a2bf41a844fdae38bf6823635820f9594cc5adf0eb1","libgit2/src/libgit2/attr.h":"c940426d88f00d1510d2698897d5fd1b9270d91ec0c86a7df10b9d07f598171e","libgit2/src/libgit2/attr_file.c":"d58933693dacef74770efda479b3330132ddec6aa28dba2a682cff71ab069027","libgit2/src/libgit2/attr_file.h":"575b181fdbc1d4d864753d0237ff7d718ea1258449bd8376db461eab73cff0e8","libgit2/src/libgit2/attrcache.c":"b93cf4a8ea1760ac5286059e6a6d61eb927e6b239d53495e1bd17e66d40fedaf","libgit2/src/libgit2/attrcache.h":"a47b509e5862731889fd1bda172f6dd2e3f9dff50b7296d4e2cee86daf508769","libgit2/src/libgit2/blame.c":"68d59b570d6f3db30f89009d68c618766a88d4668434943d6cadbea5da51b0a6","libgit2/src/libgit2/blame.h":"5cd24ffc72a646e373d5d0b850aaa86316fd83b6fb886b0aacfe57ef4fd9b760","libgit2/src/libgit2/blame_git.c":"f2909b494c1a18891f74223ffd675c0e092b58f52722f5519aabf26f9de59fd4","libgit2/src/libgit2/blame_git.h":"9b813f16b93512d27d93648e53d1438d5b931024701273b5976c1da41868e286","libgit2/src/libgit2/blob.c":"5dba150f29f75e92dd68ac92736342fe751b5e0d2fcd724523a93dbf5561ddf8","libgit2/src/libgit2/blob.h":"0d8836e7d5d286e1f5c37e342ae83b4543930c4c07de652e8eaf431e4c760ae1","libgit2/src/libgit2/branch.c":"0e6962981fc84b815bbca30adc827f19d48b533b8c188c668fbd1335a72c5ee2","libgit2/src/libgit2/branch.h":"a7512fb6c578721a8d0c47a250fee9ddbbd08fa5c53460420d8158d39511e042","libgit2/src/libgit2/buf.c":"491511777e2c68cbbb6e350e469da80fd240286d71b953230e688b920474ae27","libgit2/src/libgit2/buf.h":"4ed1bd58f01790c6b8505b9ce3f1cca443e8952c64611a36516d9c5d1cb96ac2","libgit2/src/libgit2/cache.c":"46385411ee06769a97c6d3f72568fcc34f0873444b27c8c1ba0c1f3e1255730a","libgit2/src/libgit2/cache.h":"7fb0a0a0898367f1489b0430c35ccbca440cf7119c45382ec67adeff443f83ac","libgit2/src/libgit2/checkout.c":"ed05c756353a82b9c4562941332c3177bb143f706cb4ad1f53079c369975ee3b","libgit2/src/libgit2/checkout.h":"deeaae59fbd6f4cb3d6c5b67133df66832ad3e49bc9585b6ce9c5d0aa4aa6ef0","libgit2/src/libgit2/cherrypick.c":"e5f05af2e7abaf61b8c39cb40c2f340bd5afb6f6768636f011d58cb2cce5d753","libgit2/src/libgit2/clone.c":"ee8b0e365622a15decba96140620d82d4abf172a0db5b7331c693589f3a0bae2","libgit2/src/libgit2/clone.h":"1820fe915f31a5346b28cf06c29e60cf7fa5dea92d521ed2bf2aa51d0eec3c18","libgit2/src/libgit2/commit.c":"8d53a95feb5cafb645c167ea44a2e7414c00ec442ef1486f3dabc883031df9df","libgit2/src/libgit2/commit.h":"1cd14919ffd28c7625fd0cff5a8e7d9250c5ff74370393484c92615aeadfd497","libgit2/src/libgit2/commit_graph.c":"fe50ecc334e79356c1666e2c1ccf2158dc7868304825aa0f98ec7dd5269368ab","libgit2/src/libgit2/commit_graph.h":"c691d1099c4b4b84b264a0a4695830f3ffdacdfefac26107d87c434c343c372e","libgit2/src/libgit2/commit_list.c":"1d08345c070bd807eec2698aa41d1219c1f0721b6b17b09dca8d48fb09807d51","libgit2/src/libgit2/commit_list.h":"0ca7bb97dd4d33c49420c9b7eb5689ee0b3ec01f39be08bcbbfacd695820e249","libgit2/src/libgit2/common.h":"6c3fb69d1dd0a3656b76dccbae2f2ae11d67675c3695cf0de4521daa422c28ae","libgit2/src/libgit2/config.c":"9afdee0cfa3e6cce546f3cfde18fe278a093615185a3f2d618c6c24921172888","libgit2/src/libgit2/config.h":"ac67c3fd05fd79041759ac0218b8d4a06d0ffd31ba8ed42787d27a9ae0540069","libgit2/src/libgit2/config_backend.h":"8a368a7b9235aca7a6fc70e6192b1dc9ca85c881faabb69ce612c011a53cdaa2","libgit2/src/libgit2/config_cache.c":"46fec2adc322b57a2a85a1963aa4702893228a3ba90c1a156e127552a0a1a854","libgit2/src/libgit2/config_entries.c":"a938c81fce685b07aab19a30ee163bd1cdbb8a019aefcf704d1a97373f5f8da8","libgit2/src/libgit2/config_entries.h":"932abf82f5103fef5c6e991a6e50effeb33cb6ce90eb1b15f6606d9f370feb66","libgit2/src/libgit2/config_file.c":"7a5c1667b19f7da0778c37446f5fe7991555e6cb86b956efdf97a69066f52eac","libgit2/src/libgit2/config_mem.c":"026461ece09e83d78fb65e1d876484d10bee9a09618e9ac03240afed947f87ab","libgit2/src/libgit2/config_parse.c":"4da07c1ff3a0a7d5aa359d07ae7871704125f18282aafbce5c3ea184ee8f39a3","libgit2/src/libgit2/config_parse.h":"ed2e0138e13fc0115fba047c80687eb20778984bb2ee13c261ae69893e11e5a9","libgit2/src/libgit2/config_snapshot.c":"ff6771e940ebc78bfcdb12b7dac205629e8e88732b44b10a35962e3289cd660b","libgit2/src/libgit2/crlf.c":"2b5a392b269eb2af132f790a7764271dfd8523c47d18ac0f2d9fca1bd631363e","libgit2/src/libgit2/delta.c":"3e5d84b81f8fa3b752f75e0853a548ec3863ac3f1070bf99a9367bf6ae8ab87c","libgit2/src/libgit2/delta.h":"c757526292144083a0e96e7ab259080e83158e28c4819c4fa8bc2523aec12a59","libgit2/src/libgit2/describe.c":"8b66081722449638e9f23e6d79437cf90105d829b527d6a1be27ecebdf8c6834","libgit2/src/libgit2/diff.c":"49fb166f1023f6c2f93ac9a7aa6b63ca77e6ed489f4d74005f7b9573f6a9e4b6","libgit2/src/libgit2/diff.h":"1bcfa1246864e2148235d0ce64ab7ec3973c5b9fd2a8a44dba05304c9c9cbdc4","libgit2/src/libgit2/diff_driver.c":"a6b463204405019d58171ff81761ebf7296f9710a3b7e95eb0f5e9e7c7aa7c10","libgit2/src/libgit2/diff_driver.h":"2dbce036b80a1855e8fcaa0065b8f4458cda13b9424d368b4ce82f4e49ec4065","libgit2/src/libgit2/diff_file.c":"73cc99336151b7067a10f4fffa5c944d7b0b1820d2547c52f3fd125aff37a7b9","libgit2/src/libgit2/diff_file.h":"f19e2a17d089591596325cfede708846c8df05a711e349ff84394db4af560c1c","libgit2/src/libgit2/diff_generate.c":"82887af5405762d4146e601c6e8b4880d6fd1b8299ab9a0aced136cba3fd64bd","libgit2/src/libgit2/diff_generate.h":"a856792a6febd862984ac01bd41f998a848a60cd5d72b4c04a94099d3ffc5c6b","libgit2/src/libgit2/diff_parse.c":"107d11e188e054538c29275f6755bde45523a4f04bbdbf30fcfaf18c54a88a1c","libgit2/src/libgit2/diff_parse.h":"8902d9ba9102f10898c14d0a41a8d5823450527266908cbbb06e676309e23f56","libgit2/src/libgit2/diff_print.c":"c54b55826905b94c3215a63086c393c9c90301a39288e6ef6ccefacc0b119218","libgit2/src/libgit2/diff_stats.c":"63e5e55d9f59992927409b3fafbb2c203a4098e84b0b747617e1a53a327384ba","libgit2/src/libgit2/diff_stats.h":"4ce359d523ffa03df7c0592ec0b905dd693054b44f62c4d1a91af464ace119dd","libgit2/src/libgit2/diff_tform.c":"968f687d05911785e872bf18b224ec5e47a9f5202ccbdd7ff3e814aaf6f71ae8","libgit2/src/libgit2/diff_tform.h":"a4a7433036cefffaa9d968ff45244afb4957313cd9c28980cc102f172f9eaf5a","libgit2/src/libgit2/diff_xdiff.c":"6980509ccc58b82b36c0ea42e319c402a19002bbe59c2c4ad5e7accec4cfec44","libgit2/src/libgit2/diff_xdiff.h":"f027a95aadb84a42fcc349b082ad50c0b6ce3a3c439fbdf90ffbb04f48968e81","libgit2/src/libgit2/email.c":"a8e0cff3b4a79d6d6dd1fbee30cd330e0ddcd49737247f92256cca6961cf6fcd","libgit2/src/libgit2/email.h":"6b4a9dfb85b367e3423c2967f9cc257cf498fb9dd973c4400cea2be183065d2b","libgit2/src/libgit2/errors.c":"e4681de7db0a749d0dbd55b9f9b036b9a54cf365c78201c6bc6fe86634c5582e","libgit2/src/libgit2/errors.h":"c015656a92132544b81c95e21ed61eaaa06d9df8aa73d8a97591ed4e145727a9","libgit2/src/libgit2/experimental.h.in":"9675b72f4b942cb66c2d1bb2c39e2d8f3c2c7ec562c456c5fa3ffc3119e0d900","libgit2/src/libgit2/fetch.c":"d733f8da77e33f8e84d9d5ea7b5263a686b07b1de63aa8d02be22c1194ef20d5","libgit2/src/libgit2/fetch.h":"ebf610f3a62e107bf4f768fcb45a4cfe09d990380d8f0abcd48f258463925fc9","libgit2/src/libgit2/fetchhead.c":"0f7c2cca70ce0d074c71d807a8d4180e1e80d92112029e6547f729642762d4fb","libgit2/src/libgit2/fetchhead.h":"65681769629f670afcf739d582bb7ae90f702f0c6085de3f26b79fb3293d1dc7","libgit2/src/libgit2/filter.c":"dbed23ec686ed7853e542600852f905c51459f3e73e727ce2d1aadefc3deb869","libgit2/src/libgit2/filter.h":"b716cb38e4af7b9adca4e9b1538eb546ebf15f279906561fa8fa504bcc62ed24","libgit2/src/libgit2/git2.rc":"da3c8f58e8b133c52ce5184dfd9afa88801ec3e09ed76f2547a7851a25d3199d","libgit2/src/libgit2/graph.c":"babca47e94066357799c0ab823c9b3e454187202f7ab14068a6cf0fba28bdf41","libgit2/src/libgit2/hashsig.c":"fbe29bf41024a9bf9b556756a23bea451d1ca2aced680fe666d24b651a719a7a","libgit2/src/libgit2/ident.c":"5caee7bb6cefd9858ce1624916ccbb16263c50148a233cafcd312520fff9b615","libgit2/src/libgit2/idxmap.c":"015ba3e2f290fd817152f034208a55aa94b8ebd29fc8c80b3d053847d66de605","libgit2/src/libgit2/idxmap.h":"162a477b8faa3d37e83fd413bd53f6ba2801c1cf64a03c29513601058a6ed40b","libgit2/src/libgit2/ignore.c":"8b6bb768489a655f32f9f7543f83f2c951d6ca533236b2b33d7f7489c18fde75","libgit2/src/libgit2/ignore.h":"131aa84f9e474111db0f03797969e99493e67ef287cf8801606a889765e96ece","libgit2/src/libgit2/index.c":"111b84e59351766b836c57d953780d3ac869e1a8cb58986b075bb1668f4ec759","libgit2/src/libgit2/index.h":"6c0f06f05bd26f6e41b317507b29ced630862e90a4f78c336286e9e81271d339","libgit2/src/libgit2/indexer.c":"50e8953344a653c9a2d445d83c8353ace7714d8cc486375be4694f49f64179a9","libgit2/src/libgit2/indexer.h":"bd32fd65a3a7c6014e3e9846477b060033102c8c7baeb097506074f99c50a434","libgit2/src/libgit2/iterator.c":"d818b5cc542169bc7768ffe57a01602160a95a923c1b83db734d86829ea30181","libgit2/src/libgit2/iterator.h":"6c68f151885f425c000831eac8de59aa5ef6ee9d12721ec3f56e179ef2a207cd","libgit2/src/libgit2/libgit2.c":"8e1800209b202aeca50f6ccc3c84aad1df4fdd9fa658a57c513f0a3e87e8e0be","libgit2/src/libgit2/libgit2.h":"4cc280df2f469e2c0dfedef5f895e95ff0b4eda3710b93fc10c9b0cc97f1207c","libgit2/src/libgit2/mailmap.c":"dabeb5e9520c2338e3a7496f3e3b8f593b6a422d4d083fb17ab8d33cd575cc14","libgit2/src/libgit2/mailmap.h":"edd8723b4c861c855708f2d7f9ed5e37cbb7523534349b0f69258a3557b93b36","libgit2/src/libgit2/merge.c":"21de02fd36bd784d676037c5220adb1ac0117b6777b129483bffa46a625fe8d5","libgit2/src/libgit2/merge.h":"ee2d6ebc3328e33115a69f60f0323be4fcf7a586a6308d76b5d6b6451a2e06dc","libgit2/src/libgit2/merge_driver.c":"e9696fa44bdc4250c5bf5bacdbe51e9414ec38e7b1b8c9b8d4ef3c6a9f140318","libgit2/src/libgit2/merge_driver.h":"4f56c2965330a5cb08b9f26d6b83dc4e15fced9419540d2d793f2e75049bc121","libgit2/src/libgit2/merge_file.c":"06c669e98a0d6914b9171fc9ca1255dd05261d88fa3e637aecf8254c9627d7c7","libgit2/src/libgit2/message.c":"12b4d518b4f77b20d76e6b7062f56ddc7a7a666ee97f7f33909c9010ca3b5b0f","libgit2/src/libgit2/midx.c":"8e99638b3050d33a68ba96468043522a788dfef6c40978e2d0dc2ac863584ef8","libgit2/src/libgit2/midx.h":"9efbe994a15f4e495f0576bfbe6790e4677fa3587d94ed18cec5b6c9fbeeeaa7","libgit2/src/libgit2/mwindow.c":"5dda8bed94ed7102dec821c9a1f7bfdde2ec59149343b0f70f93968dfff95395","libgit2/src/libgit2/mwindow.h":"dd5743ddcb8ebad87fafac0ea15e7072f075523a7e1d200225923631d9fb7a2f","libgit2/src/libgit2/netops.c":"823653e7ff3d0384b16c18bf5a531ab9478881f1c589633828e40da9022f399f","libgit2/src/libgit2/netops.h":"cab7bfe8d352f139f8058aac3b253963d7102decc86ab0eaa7691adfc4c7fda5","libgit2/src/libgit2/notes.c":"c53274e4e2a7b3caeb3a84fe4d3609d17addda33f29e094de7164634075effc9","libgit2/src/libgit2/notes.h":"650f92bbf875ab194b9e1d041f06fb8332bf5f402ea49cde528a81d2eac05694","libgit2/src/libgit2/object.c":"78d84c7680a4d8accf9b4d2a62de6cb31e37a924f3aa086857db3874e1c100a4","libgit2/src/libgit2/object.h":"c7e55df82135792e5162f0371bbd1694e86974ba1458a7fd8934e33727d7cb43","libgit2/src/libgit2/object_api.c":"ac963762a903ea36adb20f0d4317388159c23828a6e26e9a1b1333b7a9fa1317","libgit2/src/libgit2/odb.c":"4f2c30a52554d7a3a674eee61687676129d8fb761d7fd77456797cc7726cdf66","libgit2/src/libgit2/odb.h":"505d85dd41198f41da28cad298eb880e4a671d281756de0d8205b53ab40f1106","libgit2/src/libgit2/odb_loose.c":"01e99c92d96eee62de939acd4c8027df7e574b0fe6a6bab09e8befa12f6e27b8","libgit2/src/libgit2/odb_mempack.c":"86fb977ad58c48f7394728d7396b7e050482b35edfc87cf0a487284aa91abeda","libgit2/src/libgit2/odb_pack.c":"54b7c97be06a40d8efb6b07214bd2ed8f8da40d359db6ac89f116944b18981e8","libgit2/src/libgit2/offmap.c":"0185030081a9d7df6ca8abea2e0b2c367278172ccd5ca5eb3601555a3ac1f665","libgit2/src/libgit2/offmap.h":"e902482f4727d30f786f48fbc143d7324ace0fa60877212f7ab3e982b0d46318","libgit2/src/libgit2/oid.c":"c398561bdfe827d44aaa981c9e599421cb0c56ca95f9ad48ba328cfb2912aba9","libgit2/src/libgit2/oid.h":"6f26f2c6e78d8b39e068184805608e14c6696cc4c1e5538d36e8cfdaec6c82e7","libgit2/src/libgit2/oidarray.c":"5919ea8d7a0138d9a4323a650c2ef9f2cd52da5d6c8922ce307a6ac6fa131a8d","libgit2/src/libgit2/oidarray.h":"17a745a4d1f2c464b91080279fb4a3163bb39456be5c7e9d6c8195724cc3cba4","libgit2/src/libgit2/oidmap.c":"5a1b7b02e7210bf8f439cd606200cea373a8d7e000f90aa3b6f6bbce5298f05f","libgit2/src/libgit2/oidmap.h":"7aff6a1568632f38f2acea1a526e11e24b42fffa7b05b75ac53ce18b9dd70e42","libgit2/src/libgit2/pack-objects.c":"a92f073d86ef964d083b87e1ff1738b91cbee4df152a92140761b2143f803e77","libgit2/src/libgit2/pack-objects.h":"8ddb878f2ed2a45d298791622fe067fa0418414b8d2367f910f7abf71293a987","libgit2/src/libgit2/pack.c":"53ca2f14555d97ce8a32d940c8ed3500c3d919c53d8784873fd629e7de86c890","libgit2/src/libgit2/pack.h":"132f273b91714fa831f52d06891d742caa2009954af6786123de13f31770e164","libgit2/src/libgit2/parse.c":"d05710772531cdf814fa7a34fc63b41e9e8006e88b77305d7cb4fb538d465275","libgit2/src/libgit2/parse.h":"d5f25a7d63d004bd3abe86255b2877f5c6415939338202c32fc78e218c9554fc","libgit2/src/libgit2/patch.c":"48eceeb2b8fd25f24f830f7abda25853f4ede673b38698b671a9aac8d84562ad","libgit2/src/libgit2/patch.h":"b9cd6f2a68b709db55767d92a9b8abe34534273645eb04cad4bc581c59723bf9","libgit2/src/libgit2/patch_generate.c":"f3ae83337cc9c6c9864f98a20842c548785c9bad300443026216c05a038b18fb","libgit2/src/libgit2/patch_generate.h":"c83a9d70e860b13940f70140199ee40e8cad310350a764e726672ed7133e2999","libgit2/src/libgit2/patch_parse.c":"355f52799a0103a6eef144668f540b75c553ed56dea5ac48942711eb97f534da","libgit2/src/libgit2/patch_parse.h":"6883a184830f4c59427177eba5462d27737706a1be899db35423c5ad9d6c8c4a","libgit2/src/libgit2/path.c":"fd0059630dfa0b3b9b5654be35ac3b32f01cb4858971e1c0f246a65f378cfefb","libgit2/src/libgit2/path.h":"e5a2b8a9f717ebeafde09b3fb0330eac85c9d52213f334fedebaffefbe3575cb","libgit2/src/libgit2/pathspec.c":"e85ed481b15f0a1aba9f3c7e39f07be490cf2e32668dea10f93651eb12214e59","libgit2/src/libgit2/pathspec.h":"ab2ba851d4cd815aa25a910b792102230224ef7bb079879277d77f2984fe64cd","libgit2/src/libgit2/proxy.c":"2e979107904bc593f4d0a4a911a20efbf0956ab3441e21b10eff8661c8c7fc2a","libgit2/src/libgit2/proxy.h":"3758a64bea3691eb59a3c4d0bc70f7e1660b2a7f52e33513b03e9d7dc02bb617","libgit2/src/libgit2/push.c":"168d3992c562de0751e1de4f636098a706e928361bf5d41fcc64439138828521","libgit2/src/libgit2/push.h":"27762e4476e33c18c75bcc83051cbb26a67b8ea51407655c668c946daad46c79","libgit2/src/libgit2/reader.c":"5793bac14c3b892c58101ec23d90d6846d7d002a2379fb973ec6c277f7a2081a","libgit2/src/libgit2/reader.h":"de0410d529d888feb13a8db4221e4d73f3575e3c815e6bb4ab9a4caf4d822e32","libgit2/src/libgit2/rebase.c":"e75d4c0491c9ee84adac85c9b6ae6aedc275502f779fcdc387fc14e09104d6e0","libgit2/src/libgit2/refdb.c":"40cd4c55b0d0296bfa674541fb16936cb7c5a785be9afdbfca5e96b54adb7424","libgit2/src/libgit2/refdb.h":"ad8127049a89e43f49ffed64e82ee343e7c8acee31f7cb900b555193667cb99a","libgit2/src/libgit2/refdb_fs.c":"746d5d395c675f43946d9bfe9d110a4e0bfdff6f24d1416acc249098575a9124","libgit2/src/libgit2/reflog.c":"536efcbc098e0fce5a825ae30d0c7245c9dd01794c1cd185ee39b7a0a3577119","libgit2/src/libgit2/reflog.h":"356b7cdd3d0dace5cd7606854879e0930a31063febbd2dad3139eb8081271093","libgit2/src/libgit2/refs.c":"cc25fcc2f7f8d903953897a804d1457bf91c71297d45cda46132f98b9eef218d","libgit2/src/libgit2/refs.h":"797e1177fe2a60c564b85c51d513e01df7d089c3a1d536e9a075a6eea3bdc3b7","libgit2/src/libgit2/refspec.c":"fb3f521b55c4be10e5459935918331ec6162de05bbf63ea336ac630017d2b7c3","libgit2/src/libgit2/refspec.h":"f521436fe4a8ca3600c54d77aa19a8a1926205e44b71c9e9f2fadfccc0f087dd","libgit2/src/libgit2/remote.c":"606e6e6389b29348f93677d470d923b3a4df016b0915eb379fb90d5972189b96","libgit2/src/libgit2/remote.h":"7e76332dc34822b8687c8e4e4e877522a0ca6a16742ba04b7618d06ad2362bb9","libgit2/src/libgit2/repo_template.h":"bec227c595d193802723f81765487da76beaffafae40ec05b76a4db7de153c01","libgit2/src/libgit2/repository.c":"48a0f68d2a18b43c0b1b1a9cdef9ad97d883fedfe3b3bbd376f4a5cd31adb803","libgit2/src/libgit2/repository.h":"e82e70a6b35c88f23e06eb02ba1f5678de5a757be5a96c43227f02327be3c87c","libgit2/src/libgit2/reset.c":"920af578483ec7f894165b85693891b5f3ab6436896a4578661f09f37fc4a80d","libgit2/src/libgit2/revert.c":"ad0a36143a921ef31edff0a901788336eb60ccf3346cd407b05c3e6f1634b3ff","libgit2/src/libgit2/revparse.c":"caa8ea97f578f3a9f0e9ba8c8c8a75cfcae0c9ddbca91f809d5bb935335c9f44","libgit2/src/libgit2/revwalk.c":"2f25477016415ed91c111a4514f5934a62828be43da8474f472804d79cabdc63","libgit2/src/libgit2/revwalk.h":"d341454f2b0f22e69f1c890fb9f3a2d8ef327797dc8f1dab5cb2b2734b57bebb","libgit2/src/libgit2/settings.h":"9addfd18452820405a0309f944f01bfb63b6918f740f8dd6e6e4f889cac51537","libgit2/src/libgit2/signature.c":"6ba02d287ab9acd93ff0fcf20bb803582e9a1da7c56202a45419de696983d75d","libgit2/src/libgit2/signature.h":"86819d4aa21214e2d28994cc0e8d3ac532980ad30ada61ab1666dec563f0483f","libgit2/src/libgit2/stash.c":"4fc28de7a39b7a60c5fe6a14d351791500cff9effa134ad0a8c21eb99d6c04b8","libgit2/src/libgit2/status.c":"231e6091e44e7da6168de1b65acb6c7e6a0aa57b5cd735beb2864d5cac8992bc","libgit2/src/libgit2/status.h":"68ed612f65430563ad5b3f50973b360f583c5865e54c9b9298eb082d441c4e79","libgit2/src/libgit2/strarray.c":"94987bed6dad5529d2020d2be626b3c99cc93df1b71e081388eeb267518716b7","libgit2/src/libgit2/strarray.h":"a406e07d6100e223cf1faa06ec8cb1e451bba75bfb081cc4d2fc737a6d35243a","libgit2/src/libgit2/stream.h":"a7755d211e19ea4a29d7d6151f71efd92bb92906d1668960e076ced663961784","libgit2/src/libgit2/streams/mbedtls.c":"f32d185df1933756fb8ba3ad3e7b454c38d28005521d634a45a7f56ca9d16df7","libgit2/src/libgit2/streams/mbedtls.h":"4aab96dac336790b4b172a7f355eb3fa6db35d31765edfa6524c581c10896ec3","libgit2/src/libgit2/streams/openssl.c":"cf82090b0612bad23f74ec89eec11b724bc5fac12b2b3a1c9825189d4cc27269","libgit2/src/libgit2/streams/openssl.h":"693e5d00ba86f206170630f3a23771cec7824017b26d6c6436620b6812a03833","libgit2/src/libgit2/streams/openssl_dynamic.c":"c834ac4853423fb8c19ef41790cda973ccf6e3483eb5e5f41642d96ebdfc45f3","libgit2/src/libgit2/streams/openssl_dynamic.h":"59ffb105d875ba2da6e4a5e1ad32780773323ff4477322c8a0562f6ca38d0a60","libgit2/src/libgit2/streams/openssl_legacy.c":"1c0643b0ea8cdd9d2f37dda38d777dc6aa6d3af8c631671f413da53b62470066","libgit2/src/libgit2/streams/openssl_legacy.h":"5a0f3da348dd5fb0cf4ddf7b9f65234bb5cf7017dfb084e5aad48e8d33d818a3","libgit2/src/libgit2/streams/registry.c":"079e2c8807d0cab10ab4363599e8a82e31042ba5ba2802cb52cdca0afad8222c","libgit2/src/libgit2/streams/registry.h":"42a887dd1fff029efa00a04a4e8716905149d3639a6881dc53254170cb8e18be","libgit2/src/libgit2/streams/socket.c":"e9e4fb52dd3d07936a4f42f1a81b74d319e5bd9c3fb07085e47d385d80d532d1","libgit2/src/libgit2/streams/socket.h":"6ed5745f368fb167f24b8a733be0c2272f5bceb9fc40b5c550463428533c26f9","libgit2/src/libgit2/streams/stransport.c":"99085a58bd8a2f1cd5e37896a45b27268b7fe4a26fc137d98f5e16c7866def92","libgit2/src/libgit2/streams/stransport.h":"01c4555417713c415de10ea16222d44cd9c0c0db4ad5d7e3d5e9863d62f49eb4","libgit2/src/libgit2/streams/tls.c":"807146d607993810ad1b09362605596c067043aa78f7f062c5e92eb3b20789c8","libgit2/src/libgit2/streams/tls.h":"c989f0a996ba7a11f8732336da77266905ebbc371e5e5969955d096ae16b64ad","libgit2/src/libgit2/submodule.c":"60a6213b728bbb79940b3c60525ae65cbacfaf3a44aa16e4d2cc9b586080f237","libgit2/src/libgit2/submodule.h":"f5826a643562cc3f73ea13a7973d8f57d294c8003242f43f67ab863eb43fdc5a","libgit2/src/libgit2/sysdir.c":"bc7368efe6db818f64a8d8b4178455da7b8f8e28b157dc99ed95b094d3e0170f","libgit2/src/libgit2/sysdir.h":"a46088fb2ab6cfa011708576800e982123e9dcf6dbcffbae1ea1cb578ab0c8c5","libgit2/src/libgit2/tag.c":"941a832ec52d58a4a805d7431798750bda2d87f9fc2a22bebf533d15eb26f961","libgit2/src/libgit2/tag.h":"9a1c517ed65f7f8576bd03aef9093d911d0dcb9a6d3e62510e38d3a52972cee9","libgit2/src/libgit2/threadstate.c":"f23c1ee9a2b4e175422950f713352be10049b4247641934ae00221726b341e31","libgit2/src/libgit2/threadstate.h":"ad1a36bf103ad2d098f4a1a351d7d7c32f2d3e0a99e6a057f031d07e0657bbe2","libgit2/src/libgit2/trace.c":"f2e5041c5e688cf4e2c8ccc024ffa6a9c06b894cacfd1f967edfb5e11b513ce5","libgit2/src/libgit2/trace.h":"dc582e64181bbd55683b5afa6b400c9729a8daff22571c0ace7a3aada3b179bf","libgit2/src/libgit2/trailer.c":"b8c0cb9027532756b62c1ad6c6e96fbf7f4ef28db81d155efefa9f153458972c","libgit2/src/libgit2/transaction.c":"59f645e009b5c1a6919eb668b87215f422d7eaf9d9ae3b7ef27bf4f4a9adc3f8","libgit2/src/libgit2/transaction.h":"42e4b38d1fc7a8d57513da8230fff2f11ea4e1c2907130f99d77fdd2f099fc62","libgit2/src/libgit2/transport.c":"e366ada763261020d6293429fe0682e3df6130c98080c13659c4f5c100c4c79c","libgit2/src/libgit2/transports/auth.c":"e208690ebdec130e9737530a57835df13f5344906fbd9391aed1f665d3821458","libgit2/src/libgit2/transports/auth.h":"9354c6353908bf08a7720a1703958bf21c07556b862cea9f20d6dc94cbbe8bac","libgit2/src/libgit2/transports/auth_negotiate.c":"010ad1e83e06a6c5c9e3bdec10729038ed6adacf2c195f74baaec9bd2123659f","libgit2/src/libgit2/transports/auth_negotiate.h":"1125aec36ee74214a6a159027f6babd4299dbbc31d663202656cd12b6e83a245","libgit2/src/libgit2/transports/auth_ntlm.c":"35eaedb71b0636a996e776672fe2043a763e55b6340f63b67b1a67cb5171a526","libgit2/src/libgit2/transports/auth_ntlm.h":"66fe35444b362c6b74b07f0c01c36d00d86bf02d69526f5cdcec32d3ebe7b851","libgit2/src/libgit2/transports/credential.c":"058451ea233e7cf2d65f00b281a28caab16a84c9c83306e0ddc41479e7f93339","libgit2/src/libgit2/transports/credential_helpers.c":"e6ce81166b05d5f66c74c24086ec2025758ced7d8b85b041e190c2dab57e181b","libgit2/src/libgit2/transports/git.c":"fae194a7cfe1dae190de25d8438b9ef65e612ce0976bd2b7d651a1995094df8a","libgit2/src/libgit2/transports/http.c":"8544c67bf2804a05124441884395e25887ad3965e643b4cb2b6cbc6d471e4f18","libgit2/src/libgit2/transports/http.h":"2fb37a3a595652846d539c9a2378fefd452d3437a067721c37965557ccf42f27","libgit2/src/libgit2/transports/httpclient.c":"9ecd35e47027c37f72a482d0533e88fdea5733b34389c53cdbf4c635c52f0b48","libgit2/src/libgit2/transports/httpclient.h":"8977ed1e072bd38ee12a42f31907696e0f69c8fcd1a4ed828f9fe7f2ac6903f1","libgit2/src/libgit2/transports/local.c":"c7fdd03038830c43f29c969c83723631898556ed1f78280c94a0f00ac0027f61","libgit2/src/libgit2/transports/smart.c":"1ae532d76d787e47d2e4eae1f747009a5081ba288ea592ac36638748507c288b","libgit2/src/libgit2/transports/smart.h":"57ca4cd49b2d36e7c5b69b4cd5ddafd5758170e0271ff77df790a320ef788df2","libgit2/src/libgit2/transports/smart_pkt.c":"c1c9159ee8813818f4400ef96e54318592cbf0d0c71b0ce2719e9d2223d2ee40","libgit2/src/libgit2/transports/smart_protocol.c":"94d5993612c4343186a724b68abb42a11d309bfbd830b089aeb7c237da277ad6","libgit2/src/libgit2/transports/ssh.c":"b6424a7c312d86d0322bd3ac3b9cbc0aab74a547212eb08ac85bc01014357ca1","libgit2/src/libgit2/transports/ssh.h":"a4f6279848362d54f6ba4e9338443d6a3402c1ddb9eb85e2e3befb937cbea2ff","libgit2/src/libgit2/transports/winhttp.c":"a5d2937fed2005a72107ca903e13ff116b2857ae6a79354e06cedcecd2376642","libgit2/src/libgit2/tree-cache.c":"573d6297dbae49436e144052edeabc1810dd491b23661b5db6bdc0a6a873cafd","libgit2/src/libgit2/tree-cache.h":"f7ee6183b671c2ee185ca0680fa77cac32867f86f1915a63705a9c20dae57a6e","libgit2/src/libgit2/tree.c":"ba98bb9f3d6a10458d31f1a40852829db16dfab5a29dd688adca7538fb190a26","libgit2/src/libgit2/tree.h":"4d9bf97701430b2500763623de4be88c9b7e2b47939d9b67eeaf4522c5184a3c","libgit2/src/libgit2/userdiff.h":"f623acbe67ce809a21541d0d665536f68df9e0ed8a4aa4556cbffd070960fc88","libgit2/src/libgit2/worktree.c":"e6515401bfe96092e5c0e30667f94d878c9d41e3177e86d3e2a2b2e339b959d8","libgit2/src/libgit2/worktree.h":"6962d0da3dc1ff1e967672fcbe84b8b09807924521e5d113df811ebee8e02664","libgit2/src/libgit2/xdiff/git-xdiff.h":"2d6c730b03adb9323f3bb7d25d005627542a821a71cc003e27bef57db0c0ea23","libgit2/src/libgit2/xdiff/xdiff.h":"6459a65d5e0f910f6bdcba30cd5332a58fbb75118acb5757f5596bd22c00a6cb","libgit2/src/libgit2/xdiff/xdiffi.c":"968d02087e76c5150edb850e6c454e2b98f9d315dd42eb971d58b2e5c512d741","libgit2/src/libgit2/xdiff/xdiffi.h":"3429a12de1a8c990005268801706fc2ced0f935813e12493c2dee68ba28dc94e","libgit2/src/libgit2/xdiff/xemit.c":"a08ac82b249fc1f000ca80e62a1207c1a2b9f76adc12675d48952bdb6ae734dd","libgit2/src/libgit2/xdiff/xemit.h":"0a8c569eec74bb4d6e8b7b9a50b457532550800e0566cbba6d185974613a2e6c","libgit2/src/libgit2/xdiff/xhistogram.c":"82adc783115873b48a4421e602aaef15c62ffdae828fd24f5214de4ee500a979","libgit2/src/libgit2/xdiff/xinclude.h":"cd17076d3909d1750044114719daa2acc0ee4b53afd9c2f3864cdba453f5f0fa","libgit2/src/libgit2/xdiff/xmacros.h":"d9cc54bfc6c0f9e6eef68f9d03594a8bd10f6243a2137776527bb5c849cc9de2","libgit2/src/libgit2/xdiff/xmerge.c":"c4a500ef89a3778bdfdeb70374534d6c1165a6c01b08d4b84df2de6d2fa98f38","libgit2/src/libgit2/xdiff/xpatience.c":"c0894cf798000a170efc1f6c5ba37e1cf1ffc650d4671c4643b34d99e4161842","libgit2/src/libgit2/xdiff/xprepare.c":"3fcdbb73bb8c605c4ec4fe353ae7abfb486a916dcff72ebe50dbe6ddd064f206","libgit2/src/libgit2/xdiff/xprepare.h":"4945e8fffe620cd4d687c12618d1a4b2aa95a7a8097abf3e5e341abf96c76e1b","libgit2/src/libgit2/xdiff/xtypes.h":"3336d046bf60e0dc99f3686dfe9ecf098456f0aebe96486be5d1cd64b5d9cefa","libgit2/src/libgit2/xdiff/xutils.c":"fb22cb13666372f2ede07a8d5558fb1d2908caebeb1c50579de5b35ce5880718","libgit2/src/libgit2/xdiff/xutils.h":"78e2813f0d604d4deaf29583f6709111d8368b4bbd71cfdc55d56769570abe3e","libgit2/src/util/CMakeLists.txt":"d374e53ff35c3ff6c1eb0feecceed102d5337c63f6498a44fa9439898f9db28e","libgit2/src/util/alloc.c":"a203aa1aa433888642043576c031fdd01b230405d143511123dc8ef4b831356e","libgit2/src/util/alloc.h":"0897973a8dd43caeedf3806771930d163db62554af8efc61b1c536e7daeb4052","libgit2/src/util/allocators/failalloc.c":"60b00ca09e75ca103e15bff16533a46fece76962c9a5e2c0ebc5f18918240474","libgit2/src/util/allocators/failalloc.h":"b00b8786fb9954e3c65ddc99952efd8a09e0ef7598ae437e4f6d2a81fb56212d","libgit2/src/util/allocators/stdalloc.c":"e100fa204d60a0977c0334207aa8bf77d7787525a6bf2ed097138cbcd62d7605","libgit2/src/util/allocators/stdalloc.h":"e140c3b240622f36d7eeea232dd41711fa2c01e8b557a9d3393a5c2b416a5891","libgit2/src/util/allocators/win32_leakcheck.c":"e9817c98d0dfdf97846a24f9c0d5d25a038f26507ac2ca21b887fef3bc193f31","libgit2/src/util/allocators/win32_leakcheck.h":"1de31b13678ea2dcdae5177f5cb1b7d2d7560ff4069b8f77f07501bec4979913","libgit2/src/util/array.h":"fe58b44e15cc1c2cdcae9f1224ab17b02bedf049c2eb8af3e0ea5651f6eba8ab","libgit2/src/util/assert_safe.h":"0f2b8fa61e0dedbedbc6299618b98bc2c60dd78c386f2b9b8f7b8d747a2daf78","libgit2/src/util/bitvec.h":"281444c865be87104cff9c1b3998877a67bfd92af4b0e5b9b034fd48f6569f7a","libgit2/src/util/cc-compat.h":"555be819b4eb610bc2bf0a22c232efb90bf849c260fb6bbe1ae498f689e261f2","libgit2/src/util/date.c":"bbb6860f1c6c4c991707b0139b5cd52ac35e0bd34f6e224630fd1b6b4c895ba5","libgit2/src/util/date.h":"d24c6276fb168a0b7e9ed05ebcbb4a3ea8174588f348edb1be6ca09b8f6be2e3","libgit2/src/util/filebuf.c":"91181dc3a7a9091f6fceee639b815c2569403237f059bda88f5356f66a705485","libgit2/src/util/filebuf.h":"29e76e8f558651945448013c9d417928089470798004066316183f2505ca7355","libgit2/src/util/fs_path.c":"4ad4c17414f1da859e026f2b08663d1ac85832c3345bfe2be0a0893ab7a133ce","libgit2/src/util/fs_path.h":"07f44558b1c325254e1d672b15a5f705ea13d08d93f1afdd2dc2428664d897c0","libgit2/src/util/futils.c":"71781ee2a96d20e85be1bd4610810a926483674ed600d878234a3bd22e9666b0","libgit2/src/util/futils.h":"99decafe797c40e591e45974c7a13751ee6ea45bdd9eb7d6b6be1fc10d33cfe5","libgit2/src/util/git2_features.h.in":"abf55911a25604fcfdfb82755f3c16b82b16ed869688806d20ba4b9ae6589179","libgit2/src/util/git2_util.h":"48fe0de86f6824af50d0279835b46b9b72bd534dc6daff2a9741913811cbb493","libgit2/src/util/hash.c":"0c88b789d33f29229471a9dfba3da0a989214a08a8ea727582d81e7118c561ea","libgit2/src/util/hash.h":"6fc0c22c0a1ee5a26ef29c8512c951db23f440dad2b7a31403abc214d1d7447b","libgit2/src/util/hash/builtin.c":"fe213c6a61b923cbd3acd6e55322f4d60c531617f3b9d5d281d2050c6e0a9524","libgit2/src/util/hash/builtin.h":"bbf1ce668c7d38412a5c7351b41da31352f5eba696ed453daaf442e97c225f00","libgit2/src/util/hash/collisiondetect.c":"50be16f2b8736ca61bbe657751a0e66b847affd6030a582f3366c27659e5d245","libgit2/src/util/hash/collisiondetect.h":"21d7b15068a89ed1537a6cdb5d1a3b78e5bb3bba318839579f9b20aa796518b6","libgit2/src/util/hash/common_crypto.c":"241d19fef0e60f08189405bb8ef3426438505bea0752ac57f10db06be6dc8dcb","libgit2/src/util/hash/common_crypto.h":"5b89841130c9d4b09cf90ff25874cec68d18df3f4883ad74b15c408bbaf77b9f","libgit2/src/util/hash/mbedtls.c":"97b33e8b549e9b1da4ae558db570679feed0f91e504b339e4be697084c721343","libgit2/src/util/hash/mbedtls.h":"42dc9f2db495d9440f0ec5dcca33b28395be7bce55d2560c33cc3a4c474623cc","libgit2/src/util/hash/openssl.c":"284f335585422272c0907940f32671347f94fc37aebda731c889619e0be976e5","libgit2/src/util/hash/openssl.h":"38fe3d56238d70cba097d772f8f2ca14d403bb4f3666c5b217c5e1ee798a7fb6","libgit2/src/util/hash/rfc6234/sha.h":"137fbf064d7168c033551d8302bce635721cceb9423b8d4bd5182afbaec12af7","libgit2/src/util/hash/rfc6234/sha224-256.c":"b01cf69e8bdb01a83465ec0d6551633d97c96307406d1595887aeea3f5512136","libgit2/src/util/hash/sha.h":"5f17d7991fdd745662601cc6d08482ad9a0ab1337ad6ffd535564898cd2b31ac","libgit2/src/util/hash/sha1dc/sha1.c":"fa40cc0830d58d340eb8942499181de72fd4cb4ad4c1d1216755b0367499661a","libgit2/src/util/hash/sha1dc/sha1.h":"78f97f092c20329d1fa8d9a8cbb3d53bb90be19cbc49f1917605a9ddf520de83","libgit2/src/util/hash/sha1dc/ubc_check.c":"7b0db83569ba82965dc0d16e51e9ad85167cdfdab343f9a02c2c475bfdd93956","libgit2/src/util/hash/sha1dc/ubc_check.h":"4a140693701da167b4709c4c1b330800a0c29f2a065d0d819567a27b3171a09f","libgit2/src/util/hash/win32.c":"fed73763276bc187e2f109eb4aff19653e5fc4fb092066a3be8fd02c9e3cb77b","libgit2/src/util/hash/win32.h":"43b90e70705dcfc28cd19b1ca2ef206a364db60af390d3dd73a8ec13d2a79e69","libgit2/src/util/integer.h":"2581341c6fbc03f9403e6184a40b0aa6d67d8dc1b127e1f4e003edc867e21226","libgit2/src/util/khash.h":"ea517b2c76adbe4480f2fb0dd4d7498adaee0ada831be1607ad9dc322bfce42b","libgit2/src/util/map.h":"f678e1aab0799a95a2152aa6cf6ef6b306eb783ba2a6b2b0e3df147e5596a917","libgit2/src/util/net.c":"656628a3e86d362f65b012816fe0a231f43b382810f67987c2567ad09d208d6c","libgit2/src/util/net.h":"2922068fff1ed6be282a95fe124d6b0fde7fc76b3b5847b4c959b71173d2b37c","libgit2/src/util/pool.c":"9a84fc9208d8cfeb4537d6e8575a43ed6ff56689f23b4b48ef61381c7b5f4303","libgit2/src/util/pool.h":"ac76ce784112b6053089e0c44f26295754388b298fe2272cc0d92d67857bcaac","libgit2/src/util/posix.c":"c21b022c4f3b9dd0a3b6ecbcf2bcc5e2ee57576d8ab2654f08558d6dbba1305d","libgit2/src/util/posix.h":"5d269e063b5970c7dfede7b6637c5561b477c23db867534c4d93b6bc2bd66c80","libgit2/src/util/pqueue.c":"d5cd8f6c5639b50898fe0f9354dbb29de1a0be1d20c879242c8423907466c7c2","libgit2/src/util/pqueue.h":"6c84fffc0bfe473a0f1a7da38151b818826b488244ea660da02a78d4ef3bd3cf","libgit2/src/util/rand.c":"352a8e680a57857f11a99989cb5bd6c0a9d977764573a12030f4a46bc81098b1","libgit2/src/util/rand.h":"102ce327cbbd6dcb9bdbe4c35addc7efa0095f335873860b06d85c4a070ebeac","libgit2/src/util/regexp.c":"5784d323c06f41af8892b17b1bc048d32d75444a985154f98be6e1da2f0a29ac","libgit2/src/util/regexp.h":"855b271c6c8f5e1f3e5dc6648e9364d0448b2a9c1bc72cc3de0d1742e2905b32","libgit2/src/util/runtime.c":"b287e2f3d0a686b77736b725a86b8d6bea904b93c2f987513c608663b818a1d9","libgit2/src/util/runtime.h":"9aac7e20b2b879c49a423ef537bb0f51b8371c24503281b283b1fb74a8944f49","libgit2/src/util/sortedcache.c":"a77931c162e3280f6437c74cabf87b9ae16d5230c1ec54d401a9b9bc0fc6ad71","libgit2/src/util/sortedcache.h":"a15350fb05d181e00eedcd49dfef6cad77aafc0097121094cf60ea9c5bd3e1fd","libgit2/src/util/str.c":"8dca1dedcad4961e5f2389ede13708acb451ccab5c12819b8a7ec2e4057712f5","libgit2/src/util/str.h":"5c26b120517aa1b05ab78af401fa0e1f5848498100bc4204ca9f361451efec2c","libgit2/src/util/strmap.c":"02ee770dfbcc95f15bfe6755853f1c2795782f906d883d3102a904fedb2cda23","libgit2/src/util/strmap.h":"c1dfccefe0af68be84c1ba67fab05b03e866b75bb4a54fd434b0c3a5d9ced9cd","libgit2/src/util/strnlen.h":"27e73ccbe8be7c5bac1d022bf59f2458cc2998d0222e7658a687e02f89fcfd17","libgit2/src/util/thread.c":"6d741eabfe3739f6183e1d65935405f9fc457622d5b21978d4affdf6084e4fde","libgit2/src/util/thread.h":"a837c87234498a6d036fcbb84cddb4e9c28f73dac2f5572d0dbd2719330f2158","libgit2/src/util/tsort.c":"d1dee30457c185e86bc47efecc5417459aefeabe7cfaf8aebe5eb2239296ee20","libgit2/src/util/unix/map.c":"1606c6c48126c72040f985492b6e6bd7b5df27d384f6f5bea9c35118ef7bb2de","libgit2/src/util/unix/posix.h":"672ff8c496693fd458a36c3f8d975a8c068e22597a6a9da4175ee2f985e401fc","libgit2/src/util/unix/pthread.h":"c716daa88e2e7ef2a2df23591a6061965dc11d77ed5fe1863d367a2b738a9fb0","libgit2/src/util/unix/realpath.c":"55a9016da6f89b1c740344e944593b311cfc5495328be915f38301915e560d7b","libgit2/src/util/utf8.c":"6cbf514d854524883a85a781e5e2a9003d71793fb2cd527795d26c972831a8ef","libgit2/src/util/utf8.h":"ca0239005ee004df1b2593aa727036a82f1ce3953000c3acf712b2639acd9206","libgit2/src/util/util.c":"52f384935855140d481c9a3d3c72df1679d1e777351bb11185b9c80ad956f766","libgit2/src/util/util.h":"177f452d7a178e77cc45a81a160bb2c5edc866d7691617985772c65793f74278","libgit2/src/util/varint.c":"f93c5ba3498ac04d98ba13d3a320263892452356f797c4091411e5833dfe82f2","libgit2/src/util/varint.h":"b429d5e8b69d579cc6dab5e12ab4acf904c66947b41ca5372dfc3e327e59f533","libgit2/src/util/vector.c":"03cfd9059ffac7ada3c208379eea8ba9bb3b47e33e11d944ea333d3760ff08e8","libgit2/src/util/vector.h":"9fbf45c39ea5f2b5859022cd73b5cb857b162a7981b1838de584abe7d7316828","libgit2/src/util/wildmatch.c":"0102685757a40046a5fdee4be5be784989a84d3b4be9160d48120c4485c37133","libgit2/src/util/wildmatch.h":"7d59454a8271f810622ccfebb26c8408bd85f64c99d4411028e8482ab2c333d0","libgit2/src/util/win32/dir.c":"a0490ab8fe3be9213093afca1923a0fc472d368f2907ab23a86bb392520359cc","libgit2/src/util/win32/dir.h":"7835a64f082860bee53530a381fe9d6917be39f0d756562e8306dfd78154d3f7","libgit2/src/util/win32/error.c":"f1d2bcb2b6e60ca76c1ee0ca0f236e928331aa9755afc16926a5dab5de26d255","libgit2/src/util/win32/error.h":"44175c12d291bdf80df65a41cf669708c252ec04c8e084c41777c7a0b53569d1","libgit2/src/util/win32/map.c":"6ce9c0a15df639d1d5b334685eeef03698b3ed006924e60b67461336fd7afc20","libgit2/src/util/win32/mingw-compat.h":"f7b0c7e9dd7147e8930782cdf54ce4be385172966dd1e27435446f38cd2f6d68","libgit2/src/util/win32/msvc-compat.h":"36e4c9515a8d53e70f78794826700c4a5472235aef703ac439308dd005e31454","libgit2/src/util/win32/path_w32.c":"c2629f35267e96f2e94e4a64a1cc98c8a88e687bc51073b68309745303950d4c","libgit2/src/util/win32/path_w32.h":"de01a65de67423157b23202bcba550f4ed1d5de2ac0e06a4f2ae8177aa4319ba","libgit2/src/util/win32/posix.h":"4dd2fc1529fc7e625180b649b9212d83462c654e47ba799fa62353aed5f60e14","libgit2/src/util/win32/posix_w32.c":"c4f8844b93e91e94bd0d55178f6ebc60a310fd531b0151ee3292df47f4077fca","libgit2/src/util/win32/precompiled.c":"4dff04101bd64b95c8f708d1accd1bedc39e95a263444290f796c63f4734d4cd","libgit2/src/util/win32/precompiled.h":"3f763f472fbf822314807b91ee9a2f88fe7f2fbcd165ee4e57f3f90e2715f14c","libgit2/src/util/win32/reparse.h":"ba254a97aba283930306f39f73e297d5eb30350276b3dd86deecbf10b4094c97","libgit2/src/util/win32/thread.c":"bce98dd6a635b66d811fab98b943ec448751a8b55c7261732277ca2804862fb9","libgit2/src/util/win32/thread.h":"8141cdc5c89901c2259a64c8f070950f69d4b742ed743ee1c520fd47b5b6948c","libgit2/src/util/win32/utf-conv.c":"fce8f7998d93fcd4f043d4d643f466a854b9611389487250e65fbc987a455bca","libgit2/src/util/win32/utf-conv.h":"3c19df554ce6f006e6a6b0ca46b8cb81fd64ad0f000e92685a681fd33d8ed408","libgit2/src/util/win32/version.h":"d9d9546728ee78923ba7ea1c16c000d44450ca80f8c0c3268bf58fa9966ba38f","libgit2/src/util/win32/w32_buffer.c":"1099be7c74b5bb265614787be285505e18dcaf71412607d8ec108639762a5b8d","libgit2/src/util/win32/w32_buffer.h":"a11005a0f3b2ecb3220ea9cdfd1df4b61d90f10e0e68ed2716b2f9502f2fa8f7","libgit2/src/util/win32/w32_common.h":"214cd67bcbdf89bb7effb78ee50c60b0504319117984c1a990f8301cffd78e0d","libgit2/src/util/win32/w32_leakcheck.c":"844ae1c7a959c8f181b45cc49a6f34262d03510f7748b6be7a159d7fd5c5e56d","libgit2/src/util/win32/w32_leakcheck.h":"cace8320ae9e8ef1d5b4836905a2d318e9e2a536ad3e232393e5f42b428554e7","libgit2/src/util/win32/w32_util.c":"fbe85eac432d4d1462ba659726557f782e811353170df8838ea1f967950d8711","libgit2/src/util/win32/w32_util.h":"f052487c469e5ba2fd327e55db1721e8f3f8d8947872ac63c6a3591fe7768853","libgit2/src/util/win32/win32-compat.h":"5ea7b1837a159d66a89365ee2bf3724b32579a6a78d94b0b205d44c8697a8e6f","libgit2/src/util/zstream.c":"51e507d17742366b91e6f427a48b566b52013f06502c3f05fbd6f5120b3d6afb","libgit2/src/util/zstream.h":"daa41460cf0ed019ef62a1936fb18626e8abac2b9a05061b6a377d4ab74a4cc5"},"package":"032e537ae4dd4e50c877f258dc55fcd0657b5021f454094a425bb6bcc9edea4c"} \ No newline at end of file
diff --git a/vendor/libgit2-sys/CHANGELOG.md b/vendor/libgit2-sys/CHANGELOG.md
new file mode 100644
index 000000000..24989fdcd
--- /dev/null
+++ b/vendor/libgit2-sys/CHANGELOG.md
@@ -0,0 +1,123 @@
+# Changelog
+
+## 0.15.0+1.6.3 - 2023-04-02
+[0.14.2...0.15.0](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.14.2+1.5.1...libgit2-sys-0.15.0+1.6.3)
+
+### Added
+
+- Added bindings for `git_remote_name_is_valid`, `git_reference_name_is_valid`, and `git_tag_name_is_valid`.
+ [#882](https://github.com/rust-lang/git2-rs/pull/882)
+- Added bindings for `git_indexer` support.
+ [#911](https://github.com/rust-lang/git2-rs/pull/911)
+- Added bindings for `git_index_find_prefix`.
+ [#903](https://github.com/rust-lang/git2-rs/pull/903)
+- Added support for the deprecated group-writeable blob file mode.
+ [#887](https://github.com/rust-lang/git2-rs/pull/887)
+
+### Changed
+
+- Updated libssh2-sys from 0.2 to 0.3.
+ This brings in numerous changes, including SHA2 algorithm support with RSA.
+ [#919](https://github.com/rust-lang/git2-rs/pull/919)
+- Updated to libgit2 [1.6.3](https://github.com/libgit2/libgit2/blob/main/docs/changelog.md#v163).
+ This brings in many changes, including better SSH host key support on Windows and better SSH host key algorithm negotiation.
+ 1.6.3 is now the minimum supported version.
+ [#935](https://github.com/rust-lang/git2-rs/pull/935)
+- The `GIT_DIFF_` constants have been changed to be a `git_diff_option_t` type.
+ [#935](https://github.com/rust-lang/git2-rs/pull/935)
+
+### Fixed
+
+- Fixed the rerun-if-changed build script support on Windows. This is only relevant for those working within the git2-rs source tree.
+ [#916](https://github.com/rust-lang/git2-rs/pull/916)
+
+## 0.14.2+1.5.1 - 2023-01-20
+[0.14.1...0.14.2](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.14.1+1.5.0...libgit2-sys-0.14.2+1.5.1)
+
+### Changed
+- Updated the bundled libgit2 to [1.5.1](https://github.com/libgit2/libgit2/releases/tag/v1.5.1).
+ [a233483a3952d6112653be86fb5ce65267e3d5ac](https://github.com/rust-lang/git2-rs/commit/a233483a3952d6112653be86fb5ce65267e3d5ac)
+ - Changes: [fbea439d4b6fc91c6b619d01b85ab3b7746e4c19...42e5db98b963ae503229c63e44e06e439df50e56](https://github.com/libgit2/libgit2/compare/fbea439d4b6fc91c6b619d01b85ab3b7746e4c19...42e5db98b963ae503229c63e44e06e439df50e56):
+ - Fixes [GHSA-8643-3wh5-rmjq](https://github.com/libgit2/libgit2/security/advisories/GHSA-8643-3wh5-rmjq) to validate SSH host keys.
+ - The supported libgit2 system library range is 1.5.1 to less than 1.6.0 or 1.4.5 to less than 1.5.0, which should include this fix.
+
+## 0.13.5+1.4.5 - 2023-01-20
+[0.13.4...0.13.5](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.13.4+1.4.2...libgit2-sys-0.13.5+1.4.5)
+
+### Changed
+- Updated the bundled libgit2 to [1.4.5](https://github.com/libgit2/libgit2/releases/tag/v1.4.5).
+ - Changes: [2a0d0bd19b5d13e2ab7f3780e094404828cbb9a7...cd6f679af401eda1f172402006ef8265f8bd58ea](https://github.com/libgit2/libgit2/compare/2a0d0bd19b5d13e2ab7f3780e094404828cbb9a7...cd6f679af401eda1f172402006ef8265f8bd58ea):
+ - Fixes [GHSA-8643-3wh5-rmjq](https://github.com/libgit2/libgit2/security/advisories/GHSA-8643-3wh5-rmjq) to validate SSH host keys.
+ - The supported libgit2 system library range is 1.4.5 to less than 1.5.0.
+
+## 0.14.1+1.5.0 - 2023-01-10
+[0.14.0...0.14.1](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.14.0+1.5.0...libgit2-sys-0.14.1+1.5.0)
+
+### Added
+- Added variants to `git_cert_ssh_raw_type_t`.
+ [#909](https://github.com/rust-lang/git2-rs/pull/909)
+
+## 0.14.0+1.5.0 - 2022-07-28
+[0.13.4...0.14.0](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.13.4+1.4.2...libgit2-sys-0.14.0+1.5.0)
+
+### Added
+- Added bindings for ownership validation.
+ [#839](https://github.com/rust-lang/git2-rs/pull/839)
+
+### Changed
+
+- Updated the bundled libgit2 to [1.5.0](https://github.com/libgit2/libgit2/releases/tag/v1.5.0).
+ [#839](https://github.com/rust-lang/git2-rs/pull/839)
+ [#858](https://github.com/rust-lang/git2-rs/pull/858)
+ - Changes: [2a0d0bd19b5d13e2ab7f3780e094404828cbb9a7...fbea439d4b6fc91c6b619d01b85ab3b7746e4c19](https://github.com/libgit2/libgit2/compare/2a0d0bd19b5d13e2ab7f3780e094404828cbb9a7...fbea439d4b6fc91c6b619d01b85ab3b7746e4c19):
+ - The supported libgit2 system library range is 1.4.4 to less than 1.6.0.
+ - Fixes [CVE 2022-24765](https://github.com/libgit2/libgit2/releases/tag/v1.4.3).
+
+## 0.13.4+1.4.2 - 2022-05-10
+[0.13.3...0.13.4](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.13.3+1.4.2...libgit2-sys-0.13.4+1.4.2)
+
+### Added
+- Added bindings for `git_commit_body`
+ [#835](https://github.com/rust-lang/git2-rs/pull/835)
+
+## 0.13.3+1.4.2 - 2022-04-27
+[0.13.2...0.13.3](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.13.2+1.4.2...libgit2-sys-0.13.3+1.4.2)
+
+### Changed
+- Updated the bundled libgit2 to 1.5.0-alpha.
+ [#822](https://github.com/rust-lang/git2-rs/pull/822)
+ - Changes: [182d0d1ee933de46bf0b5a6ec269bafa77aba9a2...2a0d0bd19b5d13e2ab7f3780e094404828cbb9a7](https://github.com/libgit2/libgit2/compare/182d0d1ee933de46bf0b5a6ec269bafa77aba9a2...2a0d0bd19b5d13e2ab7f3780e094404828cbb9a7)
+- Changed the pkg-config probe to restrict linking against a version of a system-installed libgit2 to a version less than 1.5.0.
+ Previously it would allow any version above 1.4.0 which could pick up an API-breaking version.
+ [#817](https://github.com/rust-lang/git2-rs/pull/817)
+- When using pkg-config to locate libgit2, the system lib dirs are no longer added to the search path.
+ [#831](https://github.com/rust-lang/git2-rs/pull/831)
+- When using the `zlib-ng-compat` Cargo feature, `libssh2-sys` is no longer automatically included unless you also enable the `ssh` feature.
+ [#833](https://github.com/rust-lang/git2-rs/pull/833)
+
+## 0.13.2+1.4.2 - 2022-03-10
+[0.13.1...0.13.2](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.13.1+1.4.2...libgit2-sys-0.13.2+1.4.2)
+
+### Added
+- Added bindings for `git_odb_exists_ext`.
+ [#818](https://github.com/rust-lang/git2-rs/pull/818)
+
+## 0.13.1+1.4.2 - 2022-02-28
+[0.13.0...0.13.1](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.13.0+1.4.1...libgit2-sys-0.13.1+1.4.2)
+
+### Changed
+- Updated the bundled libgit2 to [1.4.2](https://github.com/libgit2/libgit2/releases/tag/v1.4.2).
+ [#815](https://github.com/rust-lang/git2-rs/pull/815)
+ - Changes: [fdd15bcfca6b2ec4b7ecad1aa11a396cb15bd064...182d0d1ee933de46bf0b5a6ec269bafa77aba9a2](https://github.com/libgit2/libgit2/compare/fdd15bcfca6b2ec4b7ecad1aa11a396cb15bd064...182d0d1ee933de46bf0b5a6ec269bafa77aba9a2).
+
+## 0.13.0+1.4.1 - 2022-02-24
+[0.12.26...0.13.0](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.12.26+1.3.0...libgit2-sys-0.13.0+1.4.1)
+
+### Changed
+- Changed libgit2-sys to use the presence of the `src` directory instead of `.git` to determine if it has a git submodule that needs updating.
+ [#801](https://github.com/rust-lang/git2-rs/pull/801)
+- Updated the bundled libgit2 to [1.4.1](https://github.com/libgit2/libgit2/releases/tag/v1.4.1) (see also [1.4.0](https://github.com/libgit2/libgit2/releases/tag/v1.4.0))
+ [#806](https://github.com/rust-lang/git2-rs/pull/806)
+ [#811](https://github.com/rust-lang/git2-rs/pull/811)
+ - Changes: [b7bad55e4bb0a285b073ba5e02b01d3f522fc95d...fdd15bcfca6b2ec4b7ecad1aa11a396cb15bd064](https://github.com/libgit2/libgit2/compare/b7bad55e4bb0a285b073ba5e02b01d3f522fc95d...fdd15bcfca6b2ec4b7ecad1aa11a396cb15bd064)
+ - The supported libgit2 system library range is 1.4.0 or greater.
diff --git a/vendor/libgit2-sys/Cargo.toml b/vendor/libgit2-sys/Cargo.toml
new file mode 100644
index 000000000..abfaf8441
--- /dev/null
+++ b/vendor/libgit2-sys/Cargo.toml
@@ -0,0 +1,69 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "libgit2-sys"
+version = "0.15.0+1.6.3"
+authors = [
+ "Josh Triplett <josh@joshtriplett.org>",
+ "Alex Crichton <alex@alexcrichton.com>",
+]
+build = "build.rs"
+links = "git2"
+exclude = [
+ "libgit2/ci/*",
+ "libgit2/docs/*",
+ "libgit2/examples/*",
+ "libgit2/fuzzers/*",
+ "libgit2/tests/*",
+]
+description = "Native bindings to the libgit2 library"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/rust-lang/git2-rs"
+
+[lib]
+name = "libgit2_sys"
+path = "lib.rs"
+
+[dependencies.libc]
+version = "0.2"
+
+[dependencies.libssh2-sys]
+version = "0.3.0"
+optional = true
+
+[dependencies.libz-sys]
+version = "1.1.0"
+features = ["libc"]
+default-features = false
+
+[build-dependencies.cc]
+version = "1.0.43"
+features = ["parallel"]
+
+[build-dependencies.pkg-config]
+version = "0.3.7"
+
+[features]
+https = ["openssl-sys"]
+ssh = ["libssh2-sys"]
+ssh_key_from_memory = []
+vendored = []
+vendored-openssl = ["openssl-sys/vendored"]
+zlib-ng-compat = [
+ "libz-sys/zlib-ng",
+ "libssh2-sys?/zlib-ng-compat",
+]
+
+[target."cfg(unix)".dependencies.openssl-sys]
+version = "0.9"
+optional = true
diff --git a/vendor/libgit2-sys/LICENSE-APACHE b/vendor/libgit2-sys/LICENSE-APACHE
new file mode 100644
index 000000000..16fe87b06
--- /dev/null
+++ b/vendor/libgit2-sys/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/vendor/libgit2-sys/LICENSE-MIT b/vendor/libgit2-sys/LICENSE-MIT
new file mode 100644
index 000000000..39e0ed660
--- /dev/null
+++ b/vendor/libgit2-sys/LICENSE-MIT
@@ -0,0 +1,25 @@
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/libgit2-sys/build.rs b/vendor/libgit2-sys/build.rs
new file mode 100644
index 000000000..c050fb387
--- /dev/null
+++ b/vendor/libgit2-sys/build.rs
@@ -0,0 +1,248 @@
+use std::env;
+use std::fs;
+use std::io;
+use std::path::{Path, PathBuf};
+use std::process::Command;
+
+fn main() {
+ let https = env::var("CARGO_FEATURE_HTTPS").is_ok();
+ let ssh = env::var("CARGO_FEATURE_SSH").is_ok();
+ let vendored = env::var("CARGO_FEATURE_VENDORED").is_ok();
+ let zlib_ng_compat = env::var("CARGO_FEATURE_ZLIB_NG_COMPAT").is_ok();
+
+ // To use zlib-ng in zlib-compat mode, we have to build libgit2 ourselves.
+ let try_to_use_system_libgit2 = !vendored && !zlib_ng_compat;
+ if try_to_use_system_libgit2 {
+ let mut cfg = pkg_config::Config::new();
+ if let Ok(lib) = cfg.range_version("1.6.3".."1.7.0").probe("libgit2") {
+ for include in &lib.include_paths {
+ println!("cargo:root={}", include.display());
+ }
+ return;
+ }
+ }
+
+ println!("cargo:rustc-cfg=libgit2_vendored");
+
+ if !Path::new("libgit2/src").exists() {
+ let _ = Command::new("git")
+ .args(&["submodule", "update", "--init", "libgit2"])
+ .status();
+ }
+
+ let target = env::var("TARGET").unwrap();
+ let windows = target.contains("windows");
+ let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap());
+ let include = dst.join("include");
+ let mut cfg = cc::Build::new();
+ fs::create_dir_all(&include).unwrap();
+
+ // Copy over all header files
+ cp_r("libgit2/include", &include);
+
+ cfg.include(&include)
+ .include("libgit2/src/libgit2")
+ .include("libgit2/src/util")
+ .out_dir(dst.join("build"))
+ .warnings(false);
+
+ // Include all cross-platform C files
+ add_c_files(&mut cfg, "libgit2/src/libgit2");
+ add_c_files(&mut cfg, "libgit2/src/util");
+ add_c_files(&mut cfg, "libgit2/src/libgit2/xdiff");
+
+ // These are activated by features, but they're all unconditionally always
+ // compiled apparently and have internal #define's to make sure they're
+ // compiled correctly.
+ add_c_files(&mut cfg, "libgit2/src/libgit2/transports");
+ add_c_files(&mut cfg, "libgit2/src/libgit2/streams");
+
+ // Always use bundled http-parser for now
+ cfg.include("libgit2/deps/http-parser")
+ .file("libgit2/deps/http-parser/http_parser.c");
+
+ // Use the included PCRE regex backend.
+ //
+ // Ideally these defines would be specific to the pcre files (or placed in
+ // a config.h), but since libgit2 already has a config.h used for other
+ // reasons, just define on the command-line for everything. Perhaps there
+ // is some way with cc to have different instructions per-file?
+ cfg.define("GIT_REGEX_BUILTIN", "1")
+ .include("libgit2/deps/pcre")
+ .define("HAVE_STDINT_H", Some("1"))
+ .define("HAVE_MEMMOVE", Some("1"))
+ .define("NO_RECURSE", Some("1"))
+ .define("NEWLINE", Some("10"))
+ .define("POSIX_MALLOC_THRESHOLD", Some("10"))
+ .define("LINK_SIZE", Some("2"))
+ .define("PARENS_NEST_LIMIT", Some("250"))
+ .define("MATCH_LIMIT", Some("10000000"))
+ .define("MATCH_LIMIT_RECURSION", Some("MATCH_LIMIT"))
+ .define("MAX_NAME_SIZE", Some("32"))
+ .define("MAX_NAME_COUNT", Some("10000"));
+ // "no symbols" warning on pcre_string_utils.c is because it is only used
+ // when when COMPILE_PCRE8 is not defined, which is the default.
+ add_c_files(&mut cfg, "libgit2/deps/pcre");
+
+ cfg.file("libgit2/src/util/allocators/failalloc.c");
+ cfg.file("libgit2/src/util/allocators/stdalloc.c");
+
+ if windows {
+ add_c_files(&mut cfg, "libgit2/src/util/win32");
+ cfg.define("STRSAFE_NO_DEPRECATE", None);
+ cfg.define("WIN32", None);
+ cfg.define("_WIN32_WINNT", Some("0x0600"));
+
+ // libgit2's build system claims that forks like mingw-w64 of MinGW
+ // still want this define to use C99 stdio functions automatically.
+ // Apparently libgit2 breaks at runtime if this isn't here? Who knows!
+ if target.contains("gnu") {
+ cfg.define("__USE_MINGW_ANSI_STDIO", "1");
+ }
+ } else {
+ add_c_files(&mut cfg, "libgit2/src/util/unix");
+ cfg.flag("-fvisibility=hidden");
+ }
+ if target.contains("solaris") || target.contains("illumos") {
+ cfg.define("_POSIX_C_SOURCE", "200112L");
+ cfg.define("__EXTENSIONS__", None);
+ }
+
+ let mut features = String::new();
+
+ features.push_str("#ifndef INCLUDE_features_h\n");
+ features.push_str("#define INCLUDE_features_h\n");
+ features.push_str("#define GIT_THREADS 1\n");
+ features.push_str("#define GIT_TRACE 1\n");
+
+ if !target.contains("android") {
+ features.push_str("#define GIT_USE_NSEC 1\n");
+ }
+
+ if target.contains("apple") {
+ features.push_str("#define GIT_USE_STAT_MTIMESPEC 1\n");
+ } else {
+ features.push_str("#define GIT_USE_STAT_MTIM 1\n");
+ }
+
+ if env::var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap() == "32" {
+ features.push_str("#define GIT_ARCH_32 1\n");
+ } else {
+ features.push_str("#define GIT_ARCH_64 1\n");
+ }
+
+ if ssh {
+ if let Some(path) = env::var_os("DEP_SSH2_INCLUDE") {
+ cfg.include(path);
+ }
+ features.push_str("#define GIT_SSH 1\n");
+ features.push_str("#define GIT_SSH_MEMORY_CREDENTIALS 1\n");
+ }
+ if https {
+ features.push_str("#define GIT_HTTPS 1\n");
+
+ if windows {
+ features.push_str("#define GIT_WINHTTP 1\n");
+ } else if target.contains("apple") {
+ features.push_str("#define GIT_SECURE_TRANSPORT 1\n");
+ } else {
+ features.push_str("#define GIT_OPENSSL 1\n");
+ if let Some(path) = env::var_os("DEP_OPENSSL_INCLUDE") {
+ cfg.include(path);
+ }
+ }
+ }
+
+ // Use the CollisionDetection SHA1 implementation.
+ features.push_str("#define GIT_SHA1_COLLISIONDETECT 1\n");
+ cfg.define("SHA1DC_NO_STANDARD_INCLUDES", "1");
+ cfg.define("SHA1DC_CUSTOM_INCLUDE_SHA1_C", "\"common.h\"");
+ cfg.define("SHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C", "\"common.h\"");
+ cfg.file("libgit2/src/util/hash/collisiondetect.c");
+ cfg.file("libgit2/src/util/hash/sha1dc/sha1.c");
+ cfg.file("libgit2/src/util/hash/sha1dc/ubc_check.c");
+
+ if https {
+ if windows {
+ features.push_str("#define GIT_SHA256_WIN32 1\n");
+ cfg.file("libgit2/src/util/hash/win32.c");
+ } else if target.contains("apple") {
+ features.push_str("#define GIT_SHA256_COMMON_CRYPTO 1\n");
+ cfg.file("libgit2/src/util/hash/common_crypto.c");
+ } else {
+ features.push_str("#define GIT_SHA256_OPENSSL 1\n");
+ cfg.file("libgit2/src/util/hash/openssl.c");
+ }
+ } else {
+ features.push_str("#define GIT_SHA256_BUILTIN 1\n");
+ cfg.file("libgit2/src/util/hash/builtin.c");
+ cfg.file("libgit2/src/util/hash/rfc6234/sha224-256.c");
+ }
+
+ if let Some(path) = env::var_os("DEP_Z_INCLUDE") {
+ cfg.include(path);
+ }
+
+ if target.contains("apple") {
+ features.push_str("#define GIT_USE_ICONV 1\n");
+ }
+
+ features.push_str("#endif\n");
+ fs::write(include.join("git2_features.h"), features).unwrap();
+
+ cfg.compile("git2");
+
+ println!("cargo:root={}", dst.display());
+
+ if target.contains("windows") {
+ println!("cargo:rustc-link-lib=winhttp");
+ println!("cargo:rustc-link-lib=rpcrt4");
+ println!("cargo:rustc-link-lib=ole32");
+ println!("cargo:rustc-link-lib=crypt32");
+ }
+
+ if target.contains("apple") {
+ println!("cargo:rustc-link-lib=iconv");
+ println!("cargo:rustc-link-lib=framework=Security");
+ println!("cargo:rustc-link-lib=framework=CoreFoundation");
+ }
+
+ println!("cargo:rerun-if-changed=libgit2/include");
+ println!("cargo:rerun-if-changed=libgit2/src");
+ println!("cargo:rerun-if-changed=libgit2/deps");
+}
+
+fn cp_r(from: impl AsRef<Path>, to: impl AsRef<Path>) {
+ for e in from.as_ref().read_dir().unwrap() {
+ let e = e.unwrap();
+ let from = e.path();
+ let to = to.as_ref().join(e.file_name());
+ if e.file_type().unwrap().is_dir() {
+ fs::create_dir_all(&to).unwrap();
+ cp_r(&from, &to);
+ } else {
+ println!("{} => {}", from.display(), to.display());
+ fs::copy(&from, &to).unwrap();
+ }
+ }
+}
+
+fn add_c_files(build: &mut cc::Build, path: impl AsRef<Path>) {
+ let path = path.as_ref();
+ if !path.exists() {
+ panic!("Path {} does not exist", path.display());
+ }
+ // sort the C files to ensure a deterministic build for reproducible builds
+ let dir = path.read_dir().unwrap();
+ let mut paths = dir.collect::<io::Result<Vec<_>>>().unwrap();
+ paths.sort_by_key(|e| e.path());
+
+ for e in paths {
+ let path = e.path();
+ if e.file_type().unwrap().is_dir() {
+ // skip dirs for now
+ } else if path.extension().and_then(|s| s.to_str()) == Some("c") {
+ build.file(&path);
+ }
+ }
+}
diff --git a/vendor/libgit2-sys/lib.rs b/vendor/libgit2-sys/lib.rs
new file mode 100644
index 000000000..ad04cac7e
--- /dev/null
+++ b/vendor/libgit2-sys/lib.rs
@@ -0,0 +1,4265 @@
+#![doc(html_root_url = "https://docs.rs/libgit2-sys/0.15")]
+#![allow(non_camel_case_types, unused_extern_crates)]
+
+// This is required to link libz when libssh2-sys is not included.
+extern crate libz_sys as libz;
+
+use libc::{c_char, c_int, c_uchar, c_uint, c_void, size_t};
+#[cfg(feature = "ssh")]
+use libssh2_sys as libssh2;
+use std::ffi::CStr;
+
+pub const GIT_OID_RAWSZ: usize = 20;
+pub const GIT_OID_HEXSZ: usize = GIT_OID_RAWSZ * 2;
+pub const GIT_CLONE_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_STASH_APPLY_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_CHECKOUT_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_MERGE_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_REMOTE_CALLBACKS_VERSION: c_uint = 1;
+pub const GIT_STATUS_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_BLAME_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_PROXY_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_SUBMODULE_UPDATE_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_ODB_BACKEND_VERSION: c_uint = 1;
+pub const GIT_REFDB_BACKEND_VERSION: c_uint = 1;
+pub const GIT_CHERRYPICK_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_APPLY_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_REVERT_OPTIONS_VERSION: c_uint = 1;
+pub const GIT_INDEXER_OPTIONS_VERSION: c_uint = 1;
+
+macro_rules! git_enum {
+ (pub enum $name:ident { $($variants:tt)* }) => {
+ #[cfg(target_env = "msvc")]
+ pub type $name = i32;
+ #[cfg(not(target_env = "msvc"))]
+ pub type $name = u32;
+ git_enum!(gen, $name, 0, $($variants)*);
+ };
+ (pub enum $name:ident: $t:ty { $($variants:tt)* }) => {
+ pub type $name = $t;
+ git_enum!(gen, $name, 0, $($variants)*);
+ };
+ (gen, $name:ident, $val:expr, $variant:ident, $($rest:tt)*) => {
+ pub const $variant: $name = $val;
+ git_enum!(gen, $name, $val+1, $($rest)*);
+ };
+ (gen, $name:ident, $val:expr, $variant:ident = $e:expr, $($rest:tt)*) => {
+ pub const $variant: $name = $e;
+ git_enum!(gen, $name, $e+1, $($rest)*);
+ };
+ (gen, $name:ident, $val:expr, ) => {}
+}
+
+pub enum git_blob {}
+pub enum git_branch_iterator {}
+pub enum git_blame {}
+pub enum git_commit {}
+pub enum git_config {}
+pub enum git_config_iterator {}
+pub enum git_index {}
+pub enum git_index_conflict_iterator {}
+pub enum git_object {}
+pub enum git_reference {}
+pub enum git_reference_iterator {}
+pub enum git_annotated_commit {}
+pub enum git_refdb {}
+pub enum git_refspec {}
+pub enum git_remote {}
+pub enum git_repository {}
+pub enum git_revwalk {}
+pub enum git_submodule {}
+pub enum git_tag {}
+pub enum git_tree {}
+pub enum git_tree_entry {}
+pub enum git_treebuilder {}
+pub enum git_push {}
+pub enum git_note {}
+pub enum git_note_iterator {}
+pub enum git_status_list {}
+pub enum git_pathspec {}
+pub enum git_pathspec_match_list {}
+pub enum git_diff {}
+pub enum git_diff_stats {}
+pub enum git_patch {}
+pub enum git_rebase {}
+pub enum git_reflog {}
+pub enum git_reflog_entry {}
+pub enum git_describe_result {}
+pub enum git_packbuilder {}
+pub enum git_odb {}
+pub enum git_odb_stream {}
+pub enum git_odb_object {}
+pub enum git_worktree {}
+pub enum git_transaction {}
+pub enum git_mailmap {}
+pub enum git_indexer {}
+
+#[repr(C)]
+pub struct git_revspec {
+ pub from: *mut git_object,
+ pub to: *mut git_object,
+ pub flags: c_uint,
+}
+
+#[repr(C)]
+pub struct git_error {
+ pub message: *mut c_char,
+ pub klass: c_int,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct git_oid {
+ pub id: [u8; GIT_OID_RAWSZ],
+}
+
+#[repr(C)]
+#[derive(Copy)]
+pub struct git_strarray {
+ pub strings: *mut *mut c_char,
+ pub count: size_t,
+}
+impl Clone for git_strarray {
+ fn clone(&self) -> git_strarray {
+ *self
+ }
+}
+
+#[repr(C)]
+#[derive(Copy)]
+pub struct git_oidarray {
+ pub ids: *mut git_oid,
+ pub count: size_t,
+}
+impl Clone for git_oidarray {
+ fn clone(&self) -> git_oidarray {
+ *self
+ }
+}
+
+#[repr(C)]
+pub struct git_signature {
+ pub name: *mut c_char,
+ pub email: *mut c_char,
+ pub when: git_time,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+pub struct git_time {
+ pub time: git_time_t,
+ pub offset: c_int,
+ pub sign: c_char,
+}
+
+pub type git_off_t = i64;
+pub type git_time_t = i64;
+pub type git_object_size_t = u64;
+
+git_enum! {
+ pub enum git_revparse_mode_t {
+ GIT_REVPARSE_SINGLE = 1 << 0,
+ GIT_REVPARSE_RANGE = 1 << 1,
+ GIT_REVPARSE_MERGE_BASE = 1 << 2,
+ }
+}
+
+git_enum! {
+ pub enum git_error_code: c_int {
+ GIT_OK = 0,
+
+ GIT_ERROR = -1,
+ GIT_ENOTFOUND = -3,
+ GIT_EEXISTS = -4,
+ GIT_EAMBIGUOUS = -5,
+ GIT_EBUFS = -6,
+ GIT_EUSER = -7,
+ GIT_EBAREREPO = -8,
+ GIT_EUNBORNBRANCH = -9,
+ GIT_EUNMERGED = -10,
+ GIT_ENONFASTFORWARD = -11,
+ GIT_EINVALIDSPEC = -12,
+ GIT_ECONFLICT = -13,
+ GIT_ELOCKED = -14,
+ GIT_EMODIFIED = -15,
+ GIT_EAUTH = -16,
+ GIT_ECERTIFICATE = -17,
+ GIT_EAPPLIED = -18,
+ GIT_EPEEL = -19,
+ GIT_EEOF = -20,
+ GIT_EINVALID = -21,
+ GIT_EUNCOMMITTED = -22,
+ GIT_EDIRECTORY = -23,
+ GIT_EMERGECONFLICT = -24,
+ GIT_PASSTHROUGH = -30,
+ GIT_ITEROVER = -31,
+ GIT_RETRY = -32,
+ GIT_EMISMATCH = -33,
+ GIT_EINDEXDIRTY = -34,
+ GIT_EAPPLYFAIL = -35,
+ GIT_EOWNER = -36,
+ }
+}
+
+git_enum! {
+ pub enum git_error_t {
+ GIT_ERROR_NONE = 0,
+ GIT_ERROR_NOMEMORY,
+ GIT_ERROR_OS,
+ GIT_ERROR_INVALID,
+ GIT_ERROR_REFERENCE,
+ GIT_ERROR_ZLIB,
+ GIT_ERROR_REPOSITORY,
+ GIT_ERROR_CONFIG,
+ GIT_ERROR_REGEX,
+ GIT_ERROR_ODB,
+ GIT_ERROR_INDEX,
+ GIT_ERROR_OBJECT,
+ GIT_ERROR_NET,
+ GIT_ERROR_TAG,
+ GIT_ERROR_TREE,
+ GIT_ERROR_INDEXER,
+ GIT_ERROR_SSL,
+ GIT_ERROR_SUBMODULE,
+ GIT_ERROR_THREAD,
+ GIT_ERROR_STASH,
+ GIT_ERROR_CHECKOUT,
+ GIT_ERROR_FETCHHEAD,
+ GIT_ERROR_MERGE,
+ GIT_ERROR_SSH,
+ GIT_ERROR_FILTER,
+ GIT_ERROR_REVERT,
+ GIT_ERROR_CALLBACK,
+ GIT_ERROR_CHERRYPICK,
+ GIT_ERROR_DESCRIBE,
+ GIT_ERROR_REBASE,
+ GIT_ERROR_FILESYSTEM,
+ GIT_ERROR_PATCH,
+ GIT_ERROR_WORKTREE,
+ GIT_ERROR_SHA1,
+ GIT_ERROR_HTTP,
+ }
+}
+
+git_enum! {
+ pub enum git_repository_state_t {
+ GIT_REPOSITORY_STATE_NONE,
+ GIT_REPOSITORY_STATE_MERGE,
+ GIT_REPOSITORY_STATE_REVERT,
+ GIT_REPOSITORY_STATE_REVERT_SEQUENCE,
+ GIT_REPOSITORY_STATE_CHERRYPICK,
+ GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE,
+ GIT_REPOSITORY_STATE_BISECT,
+ GIT_REPOSITORY_STATE_REBASE,
+ GIT_REPOSITORY_STATE_REBASE_INTERACTIVE,
+ GIT_REPOSITORY_STATE_REBASE_MERGE,
+ GIT_REPOSITORY_STATE_APPLY_MAILBOX,
+ GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE,
+ }
+}
+
+git_enum! {
+ pub enum git_direction {
+ GIT_DIRECTION_FETCH,
+ GIT_DIRECTION_PUSH,
+ }
+}
+
+#[repr(C)]
+pub struct git_clone_options {
+ pub version: c_uint,
+ pub checkout_opts: git_checkout_options,
+ pub fetch_opts: git_fetch_options,
+ pub bare: c_int,
+ pub local: git_clone_local_t,
+ pub checkout_branch: *const c_char,
+ pub repository_cb: git_repository_create_cb,
+ pub repository_cb_payload: *mut c_void,
+ pub remote_cb: git_remote_create_cb,
+ pub remote_cb_payload: *mut c_void,
+}
+
+git_enum! {
+ pub enum git_clone_local_t {
+ GIT_CLONE_LOCAL_AUTO,
+ GIT_CLONE_LOCAL,
+ GIT_CLONE_NO_LOCAL,
+ GIT_CLONE_LOCAL_NO_LINKS,
+ }
+}
+
+#[repr(C)]
+pub struct git_checkout_options {
+ pub version: c_uint,
+ pub checkout_strategy: c_uint,
+ pub disable_filters: c_int,
+ pub dir_mode: c_uint,
+ pub file_mode: c_uint,
+ pub file_open_flags: c_int,
+ pub notify_flags: c_uint,
+ pub notify_cb: git_checkout_notify_cb,
+ pub notify_payload: *mut c_void,
+ pub progress_cb: git_checkout_progress_cb,
+ pub progress_payload: *mut c_void,
+ pub paths: git_strarray,
+ pub baseline: *mut git_tree,
+ pub baseline_index: *mut git_index,
+ pub target_directory: *const c_char,
+ pub ancestor_label: *const c_char,
+ pub our_label: *const c_char,
+ pub their_label: *const c_char,
+ pub perfdata_cb: git_checkout_perfdata_cb,
+ pub perfdata_payload: *mut c_void,
+}
+
+pub type git_checkout_notify_cb = Option<
+ extern "C" fn(
+ git_checkout_notify_t,
+ *const c_char,
+ *const git_diff_file,
+ *const git_diff_file,
+ *const git_diff_file,
+ *mut c_void,
+ ) -> c_int,
+>;
+pub type git_checkout_progress_cb =
+ Option<extern "C" fn(*const c_char, size_t, size_t, *mut c_void)>;
+
+pub type git_checkout_perfdata_cb =
+ Option<extern "C" fn(*const git_checkout_perfdata, *mut c_void)>;
+
+#[repr(C)]
+pub struct git_checkout_perfdata {
+ pub mkdir_calls: size_t,
+ pub stat_calls: size_t,
+ pub chmod_calls: size_t,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone, Default)]
+pub struct git_indexer_progress {
+ pub total_objects: c_uint,
+ pub indexed_objects: c_uint,
+ pub received_objects: c_uint,
+ pub local_objects: c_uint,
+ pub total_deltas: c_uint,
+ pub indexed_deltas: c_uint,
+ pub received_bytes: size_t,
+}
+
+pub type git_indexer_progress_cb =
+ Option<extern "C" fn(*const git_indexer_progress, *mut c_void) -> c_int>;
+
+#[deprecated(
+ since = "0.10.0",
+ note = "renamed to `git_indexer_progress` to match upstream"
+)]
+pub type git_transfer_progress = git_indexer_progress;
+
+#[repr(C)]
+pub struct git_indexer_options {
+ pub version: c_uint,
+ pub progress_cb: git_indexer_progress_cb,
+ pub progress_cb_payload: *mut c_void,
+ pub verify: c_uchar,
+}
+
+pub type git_remote_ready_cb = Option<extern "C" fn(*mut git_remote, c_int, *mut c_void) -> c_int>;
+
+#[repr(C)]
+pub struct git_remote_callbacks {
+ pub version: c_uint,
+ pub sideband_progress: git_transport_message_cb,
+ pub completion: Option<extern "C" fn(git_remote_completion_type, *mut c_void) -> c_int>,
+ pub credentials: git_cred_acquire_cb,
+ pub certificate_check: git_transport_certificate_check_cb,
+ pub transfer_progress: git_indexer_progress_cb,
+ pub update_tips:
+ Option<extern "C" fn(*const c_char, *const git_oid, *const git_oid, *mut c_void) -> c_int>,
+ pub pack_progress: git_packbuilder_progress,
+ pub push_transfer_progress: git_push_transfer_progress,
+ pub push_update_reference: git_push_update_reference_cb,
+ pub push_negotiation: git_push_negotiation,
+ pub transport: git_transport_cb,
+ pub remote_ready: git_remote_ready_cb,
+ pub payload: *mut c_void,
+ pub resolve_url: git_url_resolve_cb,
+}
+
+#[repr(C)]
+pub struct git_fetch_options {
+ pub version: c_int,
+ pub callbacks: git_remote_callbacks,
+ pub prune: git_fetch_prune_t,
+ pub update_fetchhead: c_int,
+ pub download_tags: git_remote_autotag_option_t,
+ pub proxy_opts: git_proxy_options,
+ pub follow_redirects: git_remote_redirect_t,
+ pub custom_headers: git_strarray,
+}
+
+git_enum! {
+ pub enum git_remote_autotag_option_t {
+ GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED,
+ GIT_REMOTE_DOWNLOAD_TAGS_AUTO,
+ GIT_REMOTE_DOWNLOAD_TAGS_NONE,
+ GIT_REMOTE_DOWNLOAD_TAGS_ALL,
+ }
+}
+
+git_enum! {
+ pub enum git_fetch_prune_t {
+ GIT_FETCH_PRUNE_UNSPECIFIED,
+ GIT_FETCH_PRUNE,
+ GIT_FETCH_NO_PRUNE,
+ }
+}
+
+git_enum! {
+ pub enum git_remote_completion_type {
+ GIT_REMOTE_COMPLETION_DOWNLOAD,
+ GIT_REMOTE_COMPLETION_INDEXING,
+ GIT_REMOTE_COMPLETION_ERROR,
+ }
+}
+
+pub type git_transport_message_cb =
+ Option<extern "C" fn(*const c_char, c_int, *mut c_void) -> c_int>;
+pub type git_cred_acquire_cb = Option<
+ extern "C" fn(*mut *mut git_cred, *const c_char, *const c_char, c_uint, *mut c_void) -> c_int,
+>;
+pub type git_transfer_progress_cb =
+ Option<extern "C" fn(*const git_indexer_progress, *mut c_void) -> c_int>;
+pub type git_packbuilder_progress =
+ Option<extern "C" fn(git_packbuilder_stage_t, c_uint, c_uint, *mut c_void) -> c_int>;
+pub type git_push_transfer_progress =
+ Option<extern "C" fn(c_uint, c_uint, size_t, *mut c_void) -> c_int>;
+pub type git_transport_certificate_check_cb =
+ Option<extern "C" fn(*mut git_cert, c_int, *const c_char, *mut c_void) -> c_int>;
+pub type git_push_negotiation =
+ Option<extern "C" fn(*mut *const git_push_update, size_t, *mut c_void) -> c_int>;
+
+pub type git_push_update_reference_cb =
+ Option<extern "C" fn(*const c_char, *const c_char, *mut c_void) -> c_int>;
+pub type git_url_resolve_cb =
+ Option<extern "C" fn(*mut git_buf, *const c_char, c_int, *mut c_void) -> c_int>;
+
+#[repr(C)]
+pub struct git_push_update {
+ pub src_refname: *mut c_char,
+ pub dst_refname: *mut c_char,
+ pub src: git_oid,
+ pub dst: git_oid,
+}
+
+git_enum! {
+ pub enum git_cert_t {
+ GIT_CERT_NONE,
+ GIT_CERT_X509,
+ GIT_CERT_HOSTKEY_LIBSSH2,
+ GIT_CERT_STRARRAY,
+ }
+}
+
+#[repr(C)]
+pub struct git_cert {
+ pub cert_type: git_cert_t,
+}
+
+#[repr(C)]
+pub struct git_cert_hostkey {
+ pub parent: git_cert,
+ pub kind: git_cert_ssh_t,
+ pub hash_md5: [u8; 16],
+ pub hash_sha1: [u8; 20],
+ pub hash_sha256: [u8; 32],
+ pub raw_type: git_cert_ssh_raw_type_t,
+ pub hostkey: *const c_char,
+ pub hostkey_len: size_t,
+}
+
+#[repr(C)]
+pub struct git_cert_x509 {
+ pub parent: git_cert,
+ pub data: *mut c_void,
+ pub len: size_t,
+}
+
+git_enum! {
+ pub enum git_cert_ssh_t {
+ GIT_CERT_SSH_MD5 = 1 << 0,
+ GIT_CERT_SSH_SHA1 = 1 << 1,
+ GIT_CERT_SSH_SHA256 = 1 << 2,
+ GIT_CERT_SSH_RAW = 1 << 3,
+ }
+}
+
+git_enum! {
+ pub enum git_cert_ssh_raw_type_t {
+ GIT_CERT_SSH_RAW_TYPE_UNKNOWN = 0,
+ GIT_CERT_SSH_RAW_TYPE_RSA = 1,
+ GIT_CERT_SSH_RAW_TYPE_DSS = 2,
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256 = 3,
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384 = 4,
+ GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521 = 5,
+ GIT_CERT_SSH_RAW_TYPE_KEY_ED25519 = 6,
+ }
+}
+
+git_enum! {
+ pub enum git_diff_flag_t {
+ GIT_DIFF_FLAG_BINARY = 1 << 0,
+ GIT_DIFF_FLAG_NOT_BINARY = 1 << 1,
+ GIT_DIFF_FLAG_VALID_ID = 1 << 2,
+ GIT_DIFF_FLAG_EXISTS = 1 << 3,
+ }
+}
+
+#[repr(C)]
+pub struct git_diff_file {
+ pub id: git_oid,
+ pub path: *const c_char,
+ pub size: git_object_size_t,
+ pub flags: u32,
+ pub mode: u16,
+ pub id_abbrev: u16,
+}
+
+pub type git_repository_create_cb =
+ Option<extern "C" fn(*mut *mut git_repository, *const c_char, c_int, *mut c_void) -> c_int>;
+pub type git_remote_create_cb = Option<
+ extern "C" fn(
+ *mut *mut git_remote,
+ *mut git_repository,
+ *const c_char,
+ *const c_char,
+ *mut c_void,
+ ) -> c_int,
+>;
+
+git_enum! {
+ pub enum git_checkout_notify_t {
+ GIT_CHECKOUT_NOTIFY_NONE = 0,
+ GIT_CHECKOUT_NOTIFY_CONFLICT = 1 << 0,
+ GIT_CHECKOUT_NOTIFY_DIRTY = 1 << 1,
+ GIT_CHECKOUT_NOTIFY_UPDATED = 1 << 2,
+ GIT_CHECKOUT_NOTIFY_UNTRACKED = 1 << 3,
+ GIT_CHECKOUT_NOTIFY_IGNORED = 1 << 4,
+
+ GIT_CHECKOUT_NOTIFY_ALL = 0x0FFFF,
+ }
+}
+
+git_enum! {
+ pub enum git_status_t {
+ GIT_STATUS_CURRENT = 0,
+
+ GIT_STATUS_INDEX_NEW = 1 << 0,
+ GIT_STATUS_INDEX_MODIFIED = 1 << 1,
+ GIT_STATUS_INDEX_DELETED = 1 << 2,
+ GIT_STATUS_INDEX_RENAMED = 1 << 3,
+ GIT_STATUS_INDEX_TYPECHANGE = 1 << 4,
+
+ GIT_STATUS_WT_NEW = 1 << 7,
+ GIT_STATUS_WT_MODIFIED = 1 << 8,
+ GIT_STATUS_WT_DELETED = 1 << 9,
+ GIT_STATUS_WT_TYPECHANGE = 1 << 10,
+ GIT_STATUS_WT_RENAMED = 1 << 11,
+ GIT_STATUS_WT_UNREADABLE = 1 << 12,
+
+ GIT_STATUS_IGNORED = 1 << 14,
+ GIT_STATUS_CONFLICTED = 1 << 15,
+ }
+}
+
+git_enum! {
+ pub enum git_status_opt_t {
+ GIT_STATUS_OPT_INCLUDE_UNTRACKED = 1 << 0,
+ GIT_STATUS_OPT_INCLUDE_IGNORED = 1 << 1,
+ GIT_STATUS_OPT_INCLUDE_UNMODIFIED = 1 << 2,
+ GIT_STATUS_OPT_EXCLUDE_SUBMODULES = 1 << 3,
+ GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = 1 << 4,
+ GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = 1 << 5,
+ GIT_STATUS_OPT_RECURSE_IGNORED_DIRS = 1 << 6,
+ GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX = 1 << 7,
+ GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR = 1 << 8,
+ GIT_STATUS_OPT_SORT_CASE_SENSITIVELY = 1 << 9,
+ GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY = 1 << 10,
+
+ GIT_STATUS_OPT_RENAMES_FROM_REWRITES = 1 << 11,
+ GIT_STATUS_OPT_NO_REFRESH = 1 << 12,
+ GIT_STATUS_OPT_UPDATE_INDEX = 1 << 13,
+ GIT_STATUS_OPT_INCLUDE_UNREADABLE = 1 << 14,
+ GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = 1 << 15,
+ }
+}
+
+git_enum! {
+ pub enum git_status_show_t {
+ GIT_STATUS_SHOW_INDEX_AND_WORKDIR = 0,
+ GIT_STATUS_SHOW_INDEX_ONLY = 1,
+ GIT_STATUS_SHOW_WORKDIR_ONLY = 2,
+ }
+}
+
+git_enum! {
+ pub enum git_delta_t {
+ GIT_DELTA_UNMODIFIED,
+ GIT_DELTA_ADDED,
+ GIT_DELTA_DELETED,
+ GIT_DELTA_MODIFIED,
+ GIT_DELTA_RENAMED,
+ GIT_DELTA_COPIED,
+ GIT_DELTA_IGNORED,
+ GIT_DELTA_UNTRACKED,
+ GIT_DELTA_TYPECHANGE,
+ GIT_DELTA_UNREADABLE,
+ GIT_DELTA_CONFLICTED,
+ }
+}
+
+#[repr(C)]
+pub struct git_status_options {
+ pub version: c_uint,
+ pub show: git_status_show_t,
+ pub flags: c_uint,
+ pub pathspec: git_strarray,
+ pub baseline: *mut git_tree,
+ pub rename_threshold: u16,
+}
+
+#[repr(C)]
+pub struct git_diff_delta {
+ pub status: git_delta_t,
+ pub flags: u32,
+ pub similarity: u16,
+ pub nfiles: u16,
+ pub old_file: git_diff_file,
+ pub new_file: git_diff_file,
+}
+
+#[repr(C)]
+pub struct git_status_entry {
+ pub status: git_status_t,
+ pub head_to_index: *mut git_diff_delta,
+ pub index_to_workdir: *mut git_diff_delta,
+}
+
+git_enum! {
+ pub enum git_checkout_strategy_t {
+ GIT_CHECKOUT_NONE = 0,
+ GIT_CHECKOUT_SAFE = 1 << 0,
+ GIT_CHECKOUT_FORCE = 1 << 1,
+ GIT_CHECKOUT_RECREATE_MISSING = 1 << 2,
+ GIT_CHECKOUT_ALLOW_CONFLICTS = 1 << 4,
+ GIT_CHECKOUT_REMOVE_UNTRACKED = 1 << 5,
+ GIT_CHECKOUT_REMOVE_IGNORED = 1 << 6,
+ GIT_CHECKOUT_UPDATE_ONLY = 1 << 7,
+ GIT_CHECKOUT_DONT_UPDATE_INDEX = 1 << 8,
+ GIT_CHECKOUT_NO_REFRESH = 1 << 9,
+ GIT_CHECKOUT_SKIP_UNMERGED = 1 << 10,
+ GIT_CHECKOUT_USE_OURS = 1 << 11,
+ GIT_CHECKOUT_USE_THEIRS = 1 << 12,
+ GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH = 1 << 13,
+ GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES = 1 << 18,
+ GIT_CHECKOUT_DONT_OVERWRITE_IGNORED = 1 << 19,
+ GIT_CHECKOUT_CONFLICT_STYLE_MERGE = 1 << 20,
+ GIT_CHECKOUT_CONFLICT_STYLE_DIFF3 = 1 << 21,
+
+ GIT_CHECKOUT_UPDATE_SUBMODULES = 1 << 16,
+ GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = 1 << 17,
+ }
+}
+
+git_enum! {
+ pub enum git_reset_t {
+ GIT_RESET_SOFT = 1,
+ GIT_RESET_MIXED = 2,
+ GIT_RESET_HARD = 3,
+ }
+}
+
+git_enum! {
+ pub enum git_object_t: c_int {
+ GIT_OBJECT_ANY = -2,
+ GIT_OBJECT_INVALID = -1,
+ GIT_OBJECT_COMMIT = 1,
+ GIT_OBJECT_TREE = 2,
+ GIT_OBJECT_BLOB = 3,
+ GIT_OBJECT_TAG = 4,
+ GIT_OBJECT_OFS_DELTA = 6,
+ GIT_OBJECT_REF_DELTA = 7,
+ }
+}
+
+git_enum! {
+ pub enum git_reference_t {
+ GIT_REFERENCE_INVALID = 0,
+ GIT_REFERENCE_DIRECT = 1,
+ GIT_REFERENCE_SYMBOLIC = 2,
+ GIT_REFERENCE_ALL = GIT_REFERENCE_DIRECT | GIT_REFERENCE_SYMBOLIC,
+ }
+}
+
+git_enum! {
+ pub enum git_filemode_t {
+ GIT_FILEMODE_UNREADABLE = 0o000000,
+ GIT_FILEMODE_TREE = 0o040000,
+ GIT_FILEMODE_BLOB = 0o100644,
+ GIT_FILEMODE_BLOB_GROUP_WRITABLE = 0o100664,
+ GIT_FILEMODE_BLOB_EXECUTABLE = 0o100755,
+ GIT_FILEMODE_LINK = 0o120000,
+ GIT_FILEMODE_COMMIT = 0o160000,
+ }
+}
+
+git_enum! {
+ pub enum git_treewalk_mode {
+ GIT_TREEWALK_PRE = 0,
+ GIT_TREEWALK_POST = 1,
+ }
+}
+
+pub type git_treewalk_cb =
+ Option<extern "C" fn(*const c_char, *const git_tree_entry, *mut c_void) -> c_int>;
+pub type git_treebuilder_filter_cb =
+ Option<extern "C" fn(*const git_tree_entry, *mut c_void) -> c_int>;
+
+pub type git_revwalk_hide_cb = Option<extern "C" fn(*const git_oid, *mut c_void) -> c_int>;
+
+git_enum! {
+ pub enum git_tree_update_t {
+ GIT_TREE_UPDATE_UPSERT = 0,
+ GIT_TREE_UPDATE_REMOVE = 1,
+ }
+}
+
+#[repr(C)]
+pub struct git_tree_update {
+ pub action: git_tree_update_t,
+ pub id: git_oid,
+ pub filemode: git_filemode_t,
+ pub path: *const c_char,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct git_buf {
+ pub ptr: *mut c_char,
+ pub reserved: size_t,
+ pub size: size_t,
+}
+
+git_enum! {
+ pub enum git_branch_t {
+ GIT_BRANCH_LOCAL = 1,
+ GIT_BRANCH_REMOTE = 2,
+ GIT_BRANCH_ALL = GIT_BRANCH_LOCAL | GIT_BRANCH_REMOTE,
+ }
+}
+
+pub const GIT_BLAME_NORMAL: u32 = 0;
+pub const GIT_BLAME_TRACK_COPIES_SAME_FILE: u32 = 1 << 0;
+pub const GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES: u32 = 1 << 1;
+pub const GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES: u32 = 1 << 2;
+pub const GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES: u32 = 1 << 3;
+pub const GIT_BLAME_FIRST_PARENT: u32 = 1 << 4;
+pub const GIT_BLAME_USE_MAILMAP: u32 = 1 << 5;
+pub const GIT_BLAME_IGNORE_WHITESPACE: u32 = 1 << 6;
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct git_blame_options {
+ pub version: c_uint,
+
+ pub flags: u32,
+ pub min_match_characters: u16,
+ pub newest_commit: git_oid,
+ pub oldest_commit: git_oid,
+ pub min_line: usize,
+ pub max_line: usize,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct git_blame_hunk {
+ pub lines_in_hunk: usize,
+ pub final_commit_id: git_oid,
+ pub final_start_line_number: usize,
+ pub final_signature: *mut git_signature,
+ pub orig_commit_id: git_oid,
+ pub orig_path: *const c_char,
+ pub orig_start_line_number: usize,
+ pub orig_signature: *mut git_signature,
+ pub boundary: c_char,
+}
+
+pub type git_index_matched_path_cb =
+ Option<extern "C" fn(*const c_char, *const c_char, *mut c_void) -> c_int>;
+
+git_enum! {
+ pub enum git_index_entry_extended_flag_t {
+ GIT_INDEX_ENTRY_INTENT_TO_ADD = 1 << 13,
+ GIT_INDEX_ENTRY_SKIP_WORKTREE = 1 << 14,
+
+ GIT_INDEX_ENTRY_UPTODATE = 1 << 2,
+ }
+}
+
+git_enum! {
+ pub enum git_index_entry_flag_t {
+ GIT_INDEX_ENTRY_EXTENDED = 0x4000,
+ GIT_INDEX_ENTRY_VALID = 0x8000,
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct git_index_entry {
+ pub ctime: git_index_time,
+ pub mtime: git_index_time,
+ pub dev: u32,
+ pub ino: u32,
+ pub mode: u32,
+ pub uid: u32,
+ pub gid: u32,
+ pub file_size: u32,
+ pub id: git_oid,
+ pub flags: u16,
+ pub flags_extended: u16,
+ pub path: *const c_char,
+}
+
+pub const GIT_INDEX_ENTRY_NAMEMASK: u16 = 0xfff;
+pub const GIT_INDEX_ENTRY_STAGEMASK: u16 = 0x3000;
+pub const GIT_INDEX_ENTRY_STAGESHIFT: u16 = 12;
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+pub struct git_index_time {
+ pub seconds: i32,
+ pub nanoseconds: u32,
+}
+
+#[repr(C)]
+pub struct git_config_entry {
+ pub name: *const c_char,
+ pub value: *const c_char,
+ pub include_depth: c_uint,
+ pub level: git_config_level_t,
+ pub free: Option<extern "C" fn(*mut git_config_entry)>,
+ pub payload: *mut c_void,
+}
+
+git_enum! {
+ pub enum git_config_level_t: c_int {
+ GIT_CONFIG_LEVEL_PROGRAMDATA = 1,
+ GIT_CONFIG_LEVEL_SYSTEM = 2,
+ GIT_CONFIG_LEVEL_XDG = 3,
+ GIT_CONFIG_LEVEL_GLOBAL = 4,
+ GIT_CONFIG_LEVEL_LOCAL = 5,
+ GIT_CONFIG_LEVEL_APP = 6,
+ GIT_CONFIG_HIGHEST_LEVEL = -1,
+ }
+}
+
+git_enum! {
+ pub enum git_submodule_update_t {
+ GIT_SUBMODULE_UPDATE_CHECKOUT = 1,
+ GIT_SUBMODULE_UPDATE_REBASE = 2,
+ GIT_SUBMODULE_UPDATE_MERGE = 3,
+ GIT_SUBMODULE_UPDATE_NONE = 4,
+ GIT_SUBMODULE_UPDATE_DEFAULT = 0,
+ }
+}
+
+git_enum! {
+ pub enum git_submodule_ignore_t: c_int {
+ GIT_SUBMODULE_IGNORE_UNSPECIFIED = -1,
+
+ GIT_SUBMODULE_IGNORE_NONE = 1,
+ GIT_SUBMODULE_IGNORE_UNTRACKED = 2,
+ GIT_SUBMODULE_IGNORE_DIRTY = 3,
+ GIT_SUBMODULE_IGNORE_ALL = 4,
+ }
+}
+
+pub type git_submodule_cb =
+ Option<extern "C" fn(*mut git_submodule, *const c_char, *mut c_void) -> c_int>;
+
+#[repr(C)]
+pub struct git_submodule_update_options {
+ pub version: c_uint,
+ pub checkout_opts: git_checkout_options,
+ pub fetch_opts: git_fetch_options,
+ pub allow_fetch: c_int,
+}
+
+#[repr(C)]
+pub struct git_writestream {
+ pub write: Option<extern "C" fn(*mut git_writestream, *const c_char, size_t) -> c_int>,
+ pub close: Option<extern "C" fn(*mut git_writestream) -> c_int>,
+ pub free: Option<extern "C" fn(*mut git_writestream)>,
+}
+
+git_enum! {
+ pub enum git_attr_value_t {
+ GIT_ATTR_VALUE_UNSPECIFIED = 0,
+ GIT_ATTR_VALUE_TRUE,
+ GIT_ATTR_VALUE_FALSE,
+ GIT_ATTR_VALUE_STRING,
+ }
+}
+
+pub const GIT_ATTR_CHECK_FILE_THEN_INDEX: u32 = 0;
+pub const GIT_ATTR_CHECK_INDEX_THEN_FILE: u32 = 1;
+pub const GIT_ATTR_CHECK_INDEX_ONLY: u32 = 2;
+pub const GIT_ATTR_CHECK_NO_SYSTEM: u32 = 1 << 2;
+pub const GIT_ATTR_CHECK_INCLUDE_HEAD: u32 = 1 << 3;
+
+#[repr(C)]
+pub struct git_cred {
+ pub credtype: git_credtype_t,
+ pub free: Option<extern "C" fn(*mut git_cred)>,
+}
+
+git_enum! {
+ pub enum git_credtype_t {
+ GIT_CREDTYPE_USERPASS_PLAINTEXT = 1 << 0,
+ GIT_CREDTYPE_SSH_KEY = 1 << 1,
+ GIT_CREDTYPE_SSH_CUSTOM = 1 << 2,
+ GIT_CREDTYPE_DEFAULT = 1 << 3,
+ GIT_CREDTYPE_SSH_INTERACTIVE = 1 << 4,
+ GIT_CREDTYPE_USERNAME = 1 << 5,
+ GIT_CREDTYPE_SSH_MEMORY = 1 << 6,
+ }
+}
+
+pub type git_cred_ssh_interactive_callback = Option<
+ extern "C" fn(
+ name: *const c_char,
+ name_len: c_int,
+ instruction: *const c_char,
+ instruction_len: c_int,
+ num_prompts: c_int,
+ prompts: *const LIBSSH2_USERAUTH_KBDINT_PROMPT,
+ responses: *mut LIBSSH2_USERAUTH_KBDINT_RESPONSE,
+ abstrakt: *mut *mut c_void,
+ ),
+>;
+
+pub type git_cred_sign_callback = Option<
+ extern "C" fn(
+ session: *mut LIBSSH2_SESSION,
+ sig: *mut *mut c_uchar,
+ sig_len: *mut size_t,
+ data: *const c_uchar,
+ data_len: size_t,
+ abstrakt: *mut *mut c_void,
+ ),
+>;
+
+pub enum LIBSSH2_SESSION {}
+pub enum LIBSSH2_USERAUTH_KBDINT_PROMPT {}
+pub enum LIBSSH2_USERAUTH_KBDINT_RESPONSE {}
+
+#[repr(C)]
+pub struct git_push_options {
+ pub version: c_uint,
+ pub pb_parallelism: c_uint,
+ pub callbacks: git_remote_callbacks,
+ pub proxy_opts: git_proxy_options,
+ pub follow_redirects: git_remote_redirect_t,
+ pub custom_headers: git_strarray,
+}
+
+pub type git_tag_foreach_cb =
+ Option<extern "C" fn(name: *const c_char, oid: *mut git_oid, payload: *mut c_void) -> c_int>;
+
+git_enum! {
+ pub enum git_index_add_option_t {
+ GIT_INDEX_ADD_DEFAULT = 0,
+ GIT_INDEX_ADD_FORCE = 1 << 0,
+ GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = 1 << 1,
+ GIT_INDEX_ADD_CHECK_PATHSPEC = 1 << 2,
+ }
+}
+
+git_enum! {
+ pub enum git_repository_open_flag_t {
+ GIT_REPOSITORY_OPEN_NO_SEARCH = 1 << 0,
+ GIT_REPOSITORY_OPEN_CROSS_FS = 1 << 1,
+ GIT_REPOSITORY_OPEN_BARE = 1 << 2,
+ GIT_REPOSITORY_OPEN_NO_DOTGIT = 1 << 3,
+ GIT_REPOSITORY_OPEN_FROM_ENV = 1 << 4,
+ }
+}
+
+#[repr(C)]
+pub struct git_repository_init_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub mode: u32,
+ pub workdir_path: *const c_char,
+ pub description: *const c_char,
+ pub template_path: *const c_char,
+ pub initial_head: *const c_char,
+ pub origin_url: *const c_char,
+}
+
+pub const GIT_REPOSITORY_INIT_OPTIONS_VERSION: c_uint = 1;
+
+git_enum! {
+ pub enum git_repository_init_flag_t {
+ GIT_REPOSITORY_INIT_BARE = 1 << 0,
+ GIT_REPOSITORY_INIT_NO_REINIT = 1 << 1,
+ GIT_REPOSITORY_INIT_NO_DOTGIT_DIR = 1 << 2,
+ GIT_REPOSITORY_INIT_MKDIR = 1 << 3,
+ GIT_REPOSITORY_INIT_MKPATH = 1 << 4,
+ GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE = 1 << 5,
+ }
+}
+
+git_enum! {
+ pub enum git_repository_init_mode_t {
+ GIT_REPOSITORY_INIT_SHARED_UMASK = 0,
+ GIT_REPOSITORY_INIT_SHARED_GROUP = 0o002775,
+ GIT_REPOSITORY_INIT_SHARED_ALL = 0o002777,
+ }
+}
+
+git_enum! {
+ pub enum git_sort_t {
+ GIT_SORT_NONE = 0,
+ GIT_SORT_TOPOLOGICAL = 1 << 0,
+ GIT_SORT_TIME = 1 << 1,
+ GIT_SORT_REVERSE = 1 << 2,
+ }
+}
+
+git_enum! {
+ pub enum git_submodule_status_t {
+ GIT_SUBMODULE_STATUS_IN_HEAD = 1 << 0,
+ GIT_SUBMODULE_STATUS_IN_INDEX = 1 << 1,
+ GIT_SUBMODULE_STATUS_IN_CONFIG = 1 << 2,
+ GIT_SUBMODULE_STATUS_IN_WD = 1 << 3,
+ GIT_SUBMODULE_STATUS_INDEX_ADDED = 1 << 4,
+ GIT_SUBMODULE_STATUS_INDEX_DELETED = 1 << 5,
+ GIT_SUBMODULE_STATUS_INDEX_MODIFIED = 1 << 6,
+ GIT_SUBMODULE_STATUS_WD_UNINITIALIZED = 1 << 7,
+ GIT_SUBMODULE_STATUS_WD_ADDED = 1 << 8,
+ GIT_SUBMODULE_STATUS_WD_DELETED = 1 << 9,
+ GIT_SUBMODULE_STATUS_WD_MODIFIED = 1 << 10,
+ GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = 1 << 11,
+ GIT_SUBMODULE_STATUS_WD_WD_MODIFIED = 1 << 12,
+ GIT_SUBMODULE_STATUS_WD_UNTRACKED = 1 << 13,
+ }
+}
+
+#[repr(C)]
+pub struct git_remote_head {
+ pub local: c_int,
+ pub oid: git_oid,
+ pub loid: git_oid,
+ pub name: *mut c_char,
+ pub symref_target: *mut c_char,
+}
+
+git_enum! {
+ pub enum git_pathspec_flag_t {
+ GIT_PATHSPEC_DEFAULT = 0,
+ GIT_PATHSPEC_IGNORE_CASE = 1 << 0,
+ GIT_PATHSPEC_USE_CASE = 1 << 1,
+ GIT_PATHSPEC_NO_GLOB = 1 << 2,
+ GIT_PATHSPEC_NO_MATCH_ERROR = 1 << 3,
+ GIT_PATHSPEC_FIND_FAILURES = 1 << 4,
+ GIT_PATHSPEC_FAILURES_ONLY = 1 << 5,
+ }
+}
+
+pub type git_diff_file_cb = Option<extern "C" fn(*const git_diff_delta, f32, *mut c_void) -> c_int>;
+pub type git_diff_hunk_cb =
+ Option<extern "C" fn(*const git_diff_delta, *const git_diff_hunk, *mut c_void) -> c_int>;
+pub type git_diff_line_cb = Option<
+ extern "C" fn(
+ *const git_diff_delta,
+ *const git_diff_hunk,
+ *const git_diff_line,
+ *mut c_void,
+ ) -> c_int,
+>;
+pub type git_diff_binary_cb =
+ Option<extern "C" fn(*const git_diff_delta, *const git_diff_binary, *mut c_void) -> c_int>;
+
+#[repr(C)]
+pub struct git_diff_hunk {
+ pub old_start: c_int,
+ pub old_lines: c_int,
+ pub new_start: c_int,
+ pub new_lines: c_int,
+ pub header_len: size_t,
+ pub header: [c_char; 128],
+}
+
+git_enum! {
+ pub enum git_diff_line_t {
+ GIT_DIFF_LINE_CONTEXT = b' ' as git_diff_line_t,
+ GIT_DIFF_LINE_ADDITION = b'+' as git_diff_line_t,
+ GIT_DIFF_LINE_DELETION = b'-' as git_diff_line_t,
+ GIT_DIFF_LINE_CONTEXT_EOFNL = b'=' as git_diff_line_t,
+ GIT_DIFF_LINE_ADD_EOFNL = b'>' as git_diff_line_t,
+ GIT_DIFF_LINE_DEL_EOFNL = b'<' as git_diff_line_t,
+ GIT_DIFF_LINE_FILE_HDR = b'F' as git_diff_line_t,
+ GIT_DIFF_LINE_HUNK_HDR = b'H' as git_diff_line_t,
+ GIT_DIFF_LINE_BINARY = b'B' as git_diff_line_t,
+ }
+}
+
+#[repr(C)]
+pub struct git_diff_line {
+ pub origin: c_char,
+ pub old_lineno: c_int,
+ pub new_lineno: c_int,
+ pub num_lines: c_int,
+ pub content_len: size_t,
+ pub content_offset: git_off_t,
+ pub content: *const c_char,
+}
+
+#[repr(C)]
+pub struct git_diff_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub ignore_submodules: git_submodule_ignore_t,
+ pub pathspec: git_strarray,
+ pub notify_cb: git_diff_notify_cb,
+ pub progress_cb: git_diff_progress_cb,
+ pub payload: *mut c_void,
+ pub context_lines: u32,
+ pub interhunk_lines: u32,
+ pub id_abbrev: u16,
+ pub max_size: git_off_t,
+ pub old_prefix: *const c_char,
+ pub new_prefix: *const c_char,
+}
+
+git_enum! {
+ pub enum git_diff_format_t {
+ GIT_DIFF_FORMAT_PATCH = 1,
+ GIT_DIFF_FORMAT_PATCH_HEADER = 2,
+ GIT_DIFF_FORMAT_RAW = 3,
+ GIT_DIFF_FORMAT_NAME_ONLY = 4,
+ GIT_DIFF_FORMAT_NAME_STATUS = 5,
+ GIT_DIFF_FORMAT_PATCH_ID = 6,
+ }
+}
+
+git_enum! {
+ pub enum git_diff_stats_format_t {
+ GIT_DIFF_STATS_NONE = 0,
+ GIT_DIFF_STATS_FULL = 1 << 0,
+ GIT_DIFF_STATS_SHORT = 1 << 1,
+ GIT_DIFF_STATS_NUMBER = 1 << 2,
+ GIT_DIFF_STATS_INCLUDE_SUMMARY = 1 << 3,
+ }
+}
+
+pub type git_diff_notify_cb = Option<
+ extern "C" fn(*const git_diff, *const git_diff_delta, *const c_char, *mut c_void) -> c_int,
+>;
+
+pub type git_diff_progress_cb =
+ Option<extern "C" fn(*const git_diff, *const c_char, *const c_char, *mut c_void) -> c_int>;
+
+git_enum! {
+ pub enum git_diff_option_t {
+ GIT_DIFF_NORMAL = 0,
+ GIT_DIFF_REVERSE = 1 << 0,
+ GIT_DIFF_INCLUDE_IGNORED = 1 << 1,
+ GIT_DIFF_RECURSE_IGNORED_DIRS = 1 << 2,
+ GIT_DIFF_INCLUDE_UNTRACKED = 1 << 3,
+ GIT_DIFF_RECURSE_UNTRACKED_DIRS = 1 << 4,
+ GIT_DIFF_INCLUDE_UNMODIFIED = 1 << 5,
+ GIT_DIFF_INCLUDE_TYPECHANGE = 1 << 6,
+ GIT_DIFF_INCLUDE_TYPECHANGE_TREES = 1 << 7,
+ GIT_DIFF_IGNORE_FILEMODE = 1 << 8,
+ GIT_DIFF_IGNORE_SUBMODULES = 1 << 9,
+ GIT_DIFF_IGNORE_CASE = 1 << 10,
+ GIT_DIFF_DISABLE_PATHSPEC_MATCH = 1 << 12,
+ GIT_DIFF_SKIP_BINARY_CHECK = 1 << 13,
+ GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS = 1 << 14,
+ GIT_DIFF_UPDATE_INDEX = 1 << 15,
+ GIT_DIFF_INCLUDE_UNREADABLE = 1 << 16,
+ GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED = 1 << 17,
+ GIT_DIFF_INDENT_HEURISTIC = 1 << 18,
+ GIT_DIFF_IGNORE_BLANK_LINES = 1 << 19,
+ GIT_DIFF_FORCE_TEXT = 1 << 20,
+ GIT_DIFF_FORCE_BINARY = 1 << 21,
+ GIT_DIFF_IGNORE_WHITESPACE = 1 << 22,
+ GIT_DIFF_IGNORE_WHITESPACE_CHANGE = 1 << 23,
+ GIT_DIFF_IGNORE_WHITESPACE_EOL = 1 << 24,
+ GIT_DIFF_SHOW_UNTRACKED_CONTENT = 1 << 25,
+ GIT_DIFF_SHOW_UNMODIFIED = 1 << 26,
+ GIT_DIFF_PATIENCE = 1 << 28,
+ GIT_DIFF_MINIMAL = 1 << 29,
+ GIT_DIFF_SHOW_BINARY = 1 << 30,
+ }
+}
+
+#[repr(C)]
+pub struct git_diff_find_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub rename_threshold: u16,
+ pub rename_from_rewrite_threshold: u16,
+ pub copy_threshold: u16,
+ pub break_rewrite_threshold: u16,
+ pub rename_limit: size_t,
+ pub metric: *mut git_diff_similarity_metric,
+}
+
+#[repr(C)]
+pub struct git_diff_similarity_metric {
+ pub file_signature: Option<
+ extern "C" fn(*mut *mut c_void, *const git_diff_file, *const c_char, *mut c_void) -> c_int,
+ >,
+ pub buffer_signature: Option<
+ extern "C" fn(
+ *mut *mut c_void,
+ *const git_diff_file,
+ *const c_char,
+ size_t,
+ *mut c_void,
+ ) -> c_int,
+ >,
+ pub free_signature: Option<extern "C" fn(*mut c_void, *mut c_void)>,
+ pub similarity:
+ Option<extern "C" fn(*mut c_int, *mut c_void, *mut c_void, *mut c_void) -> c_int>,
+ pub payload: *mut c_void,
+}
+
+pub const GIT_DIFF_FIND_OPTIONS_VERSION: c_uint = 1;
+
+pub const GIT_DIFF_FIND_BY_CONFIG: u32 = 0;
+pub const GIT_DIFF_FIND_RENAMES: u32 = 1 << 0;
+pub const GIT_DIFF_FIND_RENAMES_FROM_REWRITES: u32 = 1 << 1;
+pub const GIT_DIFF_FIND_COPIES: u32 = 1 << 2;
+pub const GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED: u32 = 1 << 3;
+pub const GIT_DIFF_FIND_REWRITES: u32 = 1 << 4;
+pub const GIT_DIFF_BREAK_REWRITES: u32 = 1 << 5;
+pub const GIT_DIFF_FIND_AND_BREAK_REWRITES: u32 = GIT_DIFF_FIND_REWRITES | GIT_DIFF_BREAK_REWRITES;
+pub const GIT_DIFF_FIND_FOR_UNTRACKED: u32 = 1 << 6;
+pub const GIT_DIFF_FIND_ALL: u32 = 0x0ff;
+pub const GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE: u32 = 0;
+pub const GIT_DIFF_FIND_IGNORE_WHITESPACE: u32 = 1 << 12;
+pub const GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE: u32 = 1 << 13;
+pub const GIT_DIFF_FIND_EXACT_MATCH_ONLY: u32 = 1 << 14;
+pub const GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY: u32 = 1 << 15;
+pub const GIT_DIFF_FIND_REMOVE_UNMODIFIED: u32 = 1 << 16;
+
+#[repr(C)]
+pub struct git_diff_format_email_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub patch_no: usize,
+ pub total_patches: usize,
+ pub id: *const git_oid,
+ pub summary: *const c_char,
+ pub body: *const c_char,
+ pub author: *const git_signature,
+}
+
+pub const GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION: c_uint = 1;
+
+pub const GIT_DIFF_FORMAT_EMAIL_NONE: u32 = 0;
+pub const GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER: u32 = 1 << 0;
+
+#[repr(C)]
+pub struct git_diff_patchid_options {
+ pub version: c_uint,
+}
+
+pub const GIT_DIFF_PATCHID_OPTIONS_VERSION: c_uint = 1;
+
+#[repr(C)]
+pub struct git_diff_binary {
+ pub contains_data: c_uint,
+ pub old_file: git_diff_binary_file,
+ pub new_file: git_diff_binary_file,
+}
+
+#[repr(C)]
+pub struct git_diff_binary_file {
+ pub kind: git_diff_binary_t,
+ pub data: *const c_char,
+ pub datalen: size_t,
+ pub inflatedlen: size_t,
+}
+
+git_enum! {
+ pub enum git_diff_binary_t {
+ GIT_DIFF_BINARY_NONE,
+ GIT_DIFF_BINARY_LITERAL,
+ GIT_DIFF_BINARY_DELTA,
+ }
+}
+
+#[repr(C)]
+pub struct git_merge_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub rename_threshold: c_uint,
+ pub target_limit: c_uint,
+ pub metric: *mut git_diff_similarity_metric,
+ pub recursion_limit: c_uint,
+ pub default_driver: *const c_char,
+ pub file_favor: git_merge_file_favor_t,
+ pub file_flags: u32,
+}
+
+git_enum! {
+ pub enum git_merge_flag_t {
+ GIT_MERGE_FIND_RENAMES = 1 << 0,
+ GIT_MERGE_FAIL_ON_CONFLICT = 1 << 1,
+ GIT_MERGE_SKIP_REUC = 1 << 2,
+ GIT_MERGE_NO_RECURSIVE = 1 << 3,
+ }
+}
+
+git_enum! {
+ pub enum git_merge_file_favor_t {
+ GIT_MERGE_FILE_FAVOR_NORMAL = 0,
+ GIT_MERGE_FILE_FAVOR_OURS = 1,
+ GIT_MERGE_FILE_FAVOR_THEIRS = 2,
+ GIT_MERGE_FILE_FAVOR_UNION = 3,
+ }
+}
+
+git_enum! {
+ pub enum git_merge_file_flag_t {
+ GIT_MERGE_FILE_DEFAULT = 0,
+ GIT_MERGE_FILE_STYLE_MERGE = 1 << 0,
+ GIT_MERGE_FILE_STYLE_DIFF3 = 1 << 1,
+ GIT_MERGE_FILE_SIMPLIFY_ALNUM = 1 << 2,
+ GIT_MERGE_FILE_IGNORE_WHITESPACE = 1 << 3,
+ GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE = 1 << 4,
+ GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL = 1 << 5,
+ GIT_MERGE_FILE_DIFF_PATIENCE = 1 << 6,
+ GIT_MERGE_FILE_DIFF_MINIMAL = 1 << 7,
+ }
+}
+
+git_enum! {
+ pub enum git_merge_analysis_t {
+ GIT_MERGE_ANALYSIS_NONE = 0,
+ GIT_MERGE_ANALYSIS_NORMAL = 1 << 0,
+ GIT_MERGE_ANALYSIS_UP_TO_DATE = 1 << 1,
+ GIT_MERGE_ANALYSIS_FASTFORWARD = 1 << 2,
+ GIT_MERGE_ANALYSIS_UNBORN = 1 << 3,
+ }
+}
+
+git_enum! {
+ pub enum git_merge_preference_t {
+ GIT_MERGE_PREFERENCE_NONE = 0,
+ GIT_MERGE_PREFERENCE_NO_FASTFORWARD = 1 << 0,
+ GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY = 1 << 1,
+ }
+}
+
+pub type git_transport_cb = Option<
+ extern "C" fn(
+ out: *mut *mut git_transport,
+ owner: *mut git_remote,
+ param: *mut c_void,
+ ) -> c_int,
+>;
+
+#[repr(C)]
+pub struct git_transport {
+ pub version: c_uint,
+ pub connect: Option<
+ extern "C" fn(
+ transport: *mut git_transport,
+ url: *const c_char,
+ direction: c_int,
+ connect_opts: *const git_remote_connect_options,
+ ) -> c_int,
+ >,
+ pub set_connect_opts: Option<
+ extern "C" fn(
+ transport: *mut git_transport,
+ connect_opts: *const git_remote_connect_options,
+ ) -> c_int,
+ >,
+ pub capabilities:
+ Option<extern "C" fn(capabilities: *mut c_uint, transport: *mut git_transport) -> c_int>,
+ pub ls: Option<
+ extern "C" fn(
+ out: *mut *mut *const git_remote_head,
+ size: *mut size_t,
+ transport: *mut git_transport,
+ ) -> c_int,
+ >,
+ pub push: Option<extern "C" fn(transport: *mut git_transport, push: *mut git_push) -> c_int>,
+ pub negotiate_fetch: Option<
+ extern "C" fn(
+ transport: *mut git_transport,
+ repo: *mut git_repository,
+ refs: *const *const git_remote_head,
+ count: size_t,
+ ) -> c_int,
+ >,
+ pub download_pack: Option<
+ extern "C" fn(
+ transport: *mut git_transport,
+ repo: *mut git_repository,
+ stats: *mut git_indexer_progress,
+ ) -> c_int,
+ >,
+ pub is_connected: Option<extern "C" fn(transport: *mut git_transport) -> c_int>,
+ pub cancel: Option<extern "C" fn(transport: *mut git_transport)>,
+ pub close: Option<extern "C" fn(transport: *mut git_transport) -> c_int>,
+ pub free: Option<extern "C" fn(transport: *mut git_transport)>,
+}
+
+#[repr(C)]
+pub struct git_remote_connect_options {
+ pub version: c_uint,
+ pub callbacks: git_remote_callbacks,
+ pub proxy_opts: git_proxy_options,
+ pub follow_redirects: git_remote_redirect_t,
+ pub custom_headers: git_strarray,
+}
+
+git_enum! {
+ pub enum git_remote_redirect_t {
+ GIT_REMOTE_REDIRECT_NONE = 1 << 0,
+ GIT_REMOTE_REDIRECT_INITIAL = 1 << 1,
+ GIT_REMOTE_REDIRECT_ALL = 1 << 2,
+ }
+}
+
+#[repr(C)]
+pub struct git_odb_backend {
+ pub version: c_uint,
+ pub odb: *mut git_odb,
+ pub read: Option<
+ extern "C" fn(
+ *mut *mut c_void,
+ *mut size_t,
+ *mut git_object_t,
+ *mut git_odb_backend,
+ *const git_oid,
+ ) -> c_int,
+ >,
+
+ pub read_prefix: Option<
+ extern "C" fn(
+ *mut git_oid,
+ *mut *mut c_void,
+ *mut size_t,
+ *mut git_object_t,
+ *mut git_odb_backend,
+ *const git_oid,
+ size_t,
+ ) -> c_int,
+ >,
+ pub read_header: Option<
+ extern "C" fn(
+ *mut size_t,
+ *mut git_object_t,
+ *mut git_odb_backend,
+ *const git_oid,
+ ) -> c_int,
+ >,
+
+ pub write: Option<
+ extern "C" fn(
+ *mut git_odb_backend,
+ *const git_oid,
+ *const c_void,
+ size_t,
+ git_object_t,
+ ) -> c_int,
+ >,
+
+ pub writestream: Option<
+ extern "C" fn(
+ *mut *mut git_odb_stream,
+ *mut git_odb_backend,
+ git_object_size_t,
+ git_object_t,
+ ) -> c_int,
+ >,
+
+ pub readstream: Option<
+ extern "C" fn(
+ *mut *mut git_odb_stream,
+ *mut size_t,
+ *mut git_object_t,
+ *mut git_odb_backend,
+ *const git_oid,
+ ) -> c_int,
+ >,
+
+ pub exists: Option<extern "C" fn(*mut git_odb_backend, *const git_oid) -> c_int>,
+
+ pub exists_prefix:
+ Option<extern "C" fn(*mut git_oid, *mut git_odb_backend, *const git_oid, size_t) -> c_int>,
+
+ pub refresh: Option<extern "C" fn(*mut git_odb_backend) -> c_int>,
+
+ pub foreach:
+ Option<extern "C" fn(*mut git_odb_backend, git_odb_foreach_cb, *mut c_void) -> c_int>,
+
+ pub writepack: Option<
+ extern "C" fn(
+ *mut *mut git_odb_writepack,
+ *mut git_odb_backend,
+ *mut git_odb,
+ git_indexer_progress_cb,
+ *mut c_void,
+ ) -> c_int,
+ >,
+
+ pub writemidx: Option<extern "C" fn(*mut git_odb_backend) -> c_int>,
+
+ pub freshen: Option<extern "C" fn(*mut git_odb_backend, *const git_oid) -> c_int>,
+
+ pub free: Option<extern "C" fn(*mut git_odb_backend)>,
+}
+
+git_enum! {
+ pub enum git_odb_lookup_flags_t {
+ GIT_ODB_LOOKUP_NO_REFRESH = 1 << 0,
+ }
+}
+
+#[repr(C)]
+pub struct git_odb_writepack {
+ pub backend: *mut git_odb_backend,
+
+ pub append: Option<
+ extern "C" fn(
+ *mut git_odb_writepack,
+ *const c_void,
+ size_t,
+ *mut git_indexer_progress,
+ ) -> c_int,
+ >,
+
+ pub commit:
+ Option<unsafe extern "C" fn(*mut git_odb_writepack, *mut git_indexer_progress) -> c_int>,
+
+ pub free: Option<unsafe extern "C" fn(*mut git_odb_writepack)>,
+}
+
+#[repr(C)]
+pub struct git_refdb_backend {
+ pub version: c_uint,
+ pub exists: Option<extern "C" fn(*mut c_int, *mut git_refdb_backend, *const c_char) -> c_int>,
+ pub lookup: Option<
+ extern "C" fn(*mut *mut git_reference, *mut git_refdb_backend, *const c_char) -> c_int,
+ >,
+ pub iterator: Option<
+ extern "C" fn(
+ *mut *mut git_reference_iterator,
+ *mut git_refdb_backend,
+ *const c_char,
+ ) -> c_int,
+ >,
+ pub write: Option<
+ extern "C" fn(
+ *mut git_refdb_backend,
+ *const git_reference,
+ c_int,
+ *const git_signature,
+ *const c_char,
+ *const git_oid,
+ *const c_char,
+ ) -> c_int,
+ >,
+ pub rename: Option<
+ extern "C" fn(
+ *mut *mut git_reference,
+ *mut git_refdb_backend,
+ *const c_char,
+ *const c_char,
+ c_int,
+ *const git_signature,
+ *const c_char,
+ ) -> c_int,
+ >,
+ pub del: Option<
+ extern "C" fn(
+ *mut git_refdb_backend,
+ *const c_char,
+ *const git_oid,
+ *const c_char,
+ ) -> c_int,
+ >,
+ pub compress: Option<extern "C" fn(*mut git_refdb_backend) -> c_int>,
+ pub has_log: Option<extern "C" fn(*mut git_refdb_backend, *const c_char) -> c_int>,
+ pub ensure_log: Option<extern "C" fn(*mut git_refdb_backend, *const c_char) -> c_int>,
+ pub free: Option<extern "C" fn(*mut git_refdb_backend)>,
+ pub reflog_read:
+ Option<extern "C" fn(*mut *mut git_reflog, *mut git_refdb_backend, *const c_char) -> c_int>,
+ pub reflog_write: Option<extern "C" fn(*mut git_refdb_backend, *mut git_reflog) -> c_int>,
+ pub reflog_rename:
+ Option<extern "C" fn(*mut git_refdb_backend, *const c_char, *const c_char) -> c_int>,
+ pub reflog_delete: Option<extern "C" fn(*mut git_refdb_backend, *const c_char) -> c_int>,
+ pub lock:
+ Option<extern "C" fn(*mut *mut c_void, *mut git_refdb_backend, *const c_char) -> c_int>,
+ pub unlock: Option<
+ extern "C" fn(
+ *mut git_refdb_backend,
+ *mut c_void,
+ c_int,
+ c_int,
+ *const git_reference,
+ *const git_signature,
+ *const c_char,
+ ) -> c_int,
+ >,
+}
+
+#[repr(C)]
+pub struct git_proxy_options {
+ pub version: c_uint,
+ pub kind: git_proxy_t,
+ pub url: *const c_char,
+ pub credentials: git_cred_acquire_cb,
+ pub certificate_check: git_transport_certificate_check_cb,
+ pub payload: *mut c_void,
+}
+
+git_enum! {
+ pub enum git_proxy_t {
+ GIT_PROXY_NONE = 0,
+ GIT_PROXY_AUTO = 1,
+ GIT_PROXY_SPECIFIED = 2,
+ }
+}
+
+git_enum! {
+ pub enum git_smart_service_t {
+ GIT_SERVICE_UPLOADPACK_LS = 1,
+ GIT_SERVICE_UPLOADPACK = 2,
+ GIT_SERVICE_RECEIVEPACK_LS = 3,
+ GIT_SERVICE_RECEIVEPACK = 4,
+ }
+}
+
+#[repr(C)]
+pub struct git_smart_subtransport_stream {
+ pub subtransport: *mut git_smart_subtransport,
+ pub read: Option<
+ extern "C" fn(
+ *mut git_smart_subtransport_stream,
+ *mut c_char,
+ size_t,
+ *mut size_t,
+ ) -> c_int,
+ >,
+ pub write:
+ Option<extern "C" fn(*mut git_smart_subtransport_stream, *const c_char, size_t) -> c_int>,
+ pub free: Option<extern "C" fn(*mut git_smart_subtransport_stream)>,
+}
+
+#[repr(C)]
+pub struct git_smart_subtransport {
+ pub action: Option<
+ extern "C" fn(
+ *mut *mut git_smart_subtransport_stream,
+ *mut git_smart_subtransport,
+ *const c_char,
+ git_smart_service_t,
+ ) -> c_int,
+ >,
+ pub close: Option<extern "C" fn(*mut git_smart_subtransport) -> c_int>,
+ pub free: Option<extern "C" fn(*mut git_smart_subtransport)>,
+}
+
+pub type git_smart_subtransport_cb = Option<
+ extern "C" fn(*mut *mut git_smart_subtransport, *mut git_transport, *mut c_void) -> c_int,
+>;
+
+#[repr(C)]
+pub struct git_smart_subtransport_definition {
+ pub callback: git_smart_subtransport_cb,
+ pub rpc: c_uint,
+ pub param: *mut c_void,
+}
+
+#[repr(C)]
+pub struct git_describe_options {
+ pub version: c_uint,
+ pub max_candidates_tags: c_uint,
+ pub describe_strategy: c_uint,
+ pub pattern: *const c_char,
+ pub only_follow_first_parent: c_int,
+ pub show_commit_oid_as_fallback: c_int,
+}
+
+git_enum! {
+ pub enum git_describe_strategy_t {
+ GIT_DESCRIBE_DEFAULT,
+ GIT_DESCRIBE_TAGS,
+ GIT_DESCRIBE_ALL,
+ }
+}
+
+#[repr(C)]
+pub struct git_describe_format_options {
+ pub version: c_uint,
+ pub abbreviated_size: c_uint,
+ pub always_use_long_format: c_int,
+ pub dirty_suffix: *const c_char,
+}
+
+git_enum! {
+ pub enum git_packbuilder_stage_t {
+ GIT_PACKBUILDER_ADDING_OBJECTS,
+ GIT_PACKBUILDER_DELTAFICATION,
+ }
+}
+
+git_enum! {
+ pub enum git_stash_flags {
+ GIT_STASH_DEFAULT = 0,
+ GIT_STASH_KEEP_INDEX = 1 << 0,
+ GIT_STASH_INCLUDE_UNTRACKED = 1 << 1,
+ GIT_STASH_INCLUDE_IGNORED = 1 << 2,
+ }
+}
+
+git_enum! {
+ pub enum git_stash_apply_flags {
+ GIT_STASH_APPLY_DEFAULT = 0,
+ GIT_STASH_APPLY_REINSTATE_INDEX = 1 << 0,
+ }
+}
+
+git_enum! {
+ pub enum git_stash_apply_progress_t {
+ GIT_STASH_APPLY_PROGRESS_NONE = 0,
+ GIT_STASH_APPLY_PROGRESS_LOADING_STASH,
+ GIT_STASH_APPLY_PROGRESS_ANALYZE_INDEX,
+ GIT_STASH_APPLY_PROGRESS_ANALYZE_MODIFIED,
+ GIT_STASH_APPLY_PROGRESS_ANALYZE_UNTRACKED,
+ GIT_STASH_APPLY_PROGRESS_CHECKOUT_UNTRACKED,
+ GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED,
+ GIT_STASH_APPLY_PROGRESS_DONE,
+ }
+}
+
+#[repr(C)]
+pub struct git_stash_apply_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub checkout_options: git_checkout_options,
+ pub progress_cb: git_stash_apply_progress_cb,
+ pub progress_payload: *mut c_void,
+}
+
+pub type git_stash_apply_progress_cb =
+ Option<extern "C" fn(progress: git_stash_apply_progress_t, payload: *mut c_void) -> c_int>;
+
+pub type git_stash_cb = Option<
+ extern "C" fn(
+ index: size_t,
+ message: *const c_char,
+ stash_id: *const git_oid,
+ payload: *mut c_void,
+ ) -> c_int,
+>;
+
+pub type git_packbuilder_foreach_cb =
+ Option<extern "C" fn(*const c_void, size_t, *mut c_void) -> c_int>;
+
+pub type git_odb_foreach_cb =
+ Option<extern "C" fn(id: *const git_oid, payload: *mut c_void) -> c_int>;
+
+pub type git_commit_signing_cb = Option<
+ extern "C" fn(
+ signature: *mut git_buf,
+ signature_field: *mut git_buf,
+ commit_content: *const c_char,
+ payload: *mut c_void,
+ ) -> c_int,
+>;
+
+pub type git_commit_create_cb = Option<
+ extern "C" fn(
+ *mut git_oid,
+ *const git_signature,
+ *const git_signature,
+ *const c_char,
+ *const c_char,
+ *const git_tree,
+ usize,
+ *const git_commit,
+ *mut c_void,
+ ) -> c_int,
+>;
+
+pub const GIT_REBASE_NO_OPERATION: usize = usize::max_value();
+
+#[repr(C)]
+pub struct git_rebase_options {
+ pub version: c_uint,
+ pub quiet: c_int,
+ pub inmemory: c_int,
+ pub rewrite_notes_ref: *const c_char,
+ pub merge_options: git_merge_options,
+ pub checkout_options: git_checkout_options,
+ pub commit_create_cb: git_commit_create_cb,
+ pub signing_cb: git_commit_signing_cb,
+ pub payload: *mut c_void,
+}
+
+git_enum! {
+ pub enum git_rebase_operation_t {
+ GIT_REBASE_OPERATION_PICK = 0,
+ GIT_REBASE_OPERATION_REWORD,
+ GIT_REBASE_OPERATION_EDIT,
+ GIT_REBASE_OPERATION_SQUASH,
+ GIT_REBASE_OPERATION_FIXUP,
+ GIT_REBASE_OPERATION_EXEC,
+ }
+}
+
+#[repr(C)]
+pub struct git_rebase_operation {
+ pub kind: git_rebase_operation_t,
+ pub id: git_oid,
+ pub exec: *const c_char,
+}
+
+#[repr(C)]
+pub struct git_cherrypick_options {
+ pub version: c_uint,
+ pub mainline: c_uint,
+ pub merge_opts: git_merge_options,
+ pub checkout_opts: git_checkout_options,
+}
+
+pub type git_revert_options = git_cherrypick_options;
+
+pub type git_apply_delta_cb =
+ Option<extern "C" fn(delta: *const git_diff_delta, payload: *mut c_void) -> c_int>;
+
+pub type git_apply_hunk_cb =
+ Option<extern "C" fn(hunk: *const git_diff_hunk, payload: *mut c_void) -> c_int>;
+
+git_enum! {
+ pub enum git_apply_flags_t {
+ GIT_APPLY_CHECK = 1<<0,
+ }
+}
+
+#[repr(C)]
+pub struct git_apply_options {
+ pub version: c_uint,
+ pub delta_cb: git_apply_delta_cb,
+ pub hunk_cb: git_apply_hunk_cb,
+ pub payload: *mut c_void,
+ pub flags: u32,
+}
+
+git_enum! {
+ pub enum git_apply_location_t {
+ GIT_APPLY_LOCATION_WORKDIR = 0,
+ GIT_APPLY_LOCATION_INDEX = 1,
+ GIT_APPLY_LOCATION_BOTH = 2,
+ }
+}
+
+git_enum! {
+ pub enum git_libgit2_opt_t {
+ GIT_OPT_GET_MWINDOW_SIZE = 0,
+ GIT_OPT_SET_MWINDOW_SIZE,
+ GIT_OPT_GET_MWINDOW_MAPPED_LIMIT,
+ GIT_OPT_SET_MWINDOW_MAPPED_LIMIT,
+ GIT_OPT_GET_SEARCH_PATH,
+ GIT_OPT_SET_SEARCH_PATH,
+ GIT_OPT_SET_CACHE_OBJECT_LIMIT,
+ GIT_OPT_SET_CACHE_MAX_SIZE,
+ GIT_OPT_ENABLE_CACHING,
+ GIT_OPT_GET_CACHED_MEMORY,
+ GIT_OPT_GET_TEMPLATE_PATH,
+ GIT_OPT_SET_TEMPLATE_PATH,
+ GIT_OPT_SET_SSL_CERT_LOCATIONS,
+ GIT_OPT_SET_USER_AGENT,
+ GIT_OPT_ENABLE_STRICT_OBJECT_CREATION,
+ GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION,
+ GIT_OPT_SET_SSL_CIPHERS,
+ GIT_OPT_GET_USER_AGENT,
+ GIT_OPT_ENABLE_OFS_DELTA,
+ GIT_OPT_ENABLE_FSYNC_GITDIR,
+ GIT_OPT_GET_WINDOWS_SHAREMODE,
+ GIT_OPT_SET_WINDOWS_SHAREMODE,
+ GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION,
+ GIT_OPT_SET_ALLOCATOR,
+ GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY,
+ GIT_OPT_GET_PACK_MAX_OBJECTS,
+ GIT_OPT_SET_PACK_MAX_OBJECTS,
+ GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS,
+ GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE,
+ GIT_OPT_GET_MWINDOW_FILE_LIMIT,
+ GIT_OPT_SET_MWINDOW_FILE_LIMIT,
+ GIT_OPT_SET_ODB_PACKED_PRIORITY,
+ GIT_OPT_SET_ODB_LOOSE_PRIORITY,
+ GIT_OPT_GET_EXTENSIONS,
+ GIT_OPT_SET_EXTENSIONS,
+ GIT_OPT_GET_OWNER_VALIDATION,
+ GIT_OPT_SET_OWNER_VALIDATION,
+ }
+}
+
+git_enum! {
+ pub enum git_reference_format_t {
+ GIT_REFERENCE_FORMAT_NORMAL = 0,
+ GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL = 1 << 0,
+ GIT_REFERENCE_FORMAT_REFSPEC_PATTERN = 1 << 1,
+ GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND = 1 << 2,
+ }
+}
+
+#[repr(C)]
+pub struct git_worktree_add_options {
+ pub version: c_uint,
+ pub lock: c_int,
+ pub reference: *mut git_reference,
+ pub checkout_options: git_checkout_options,
+}
+
+pub const GIT_WORKTREE_ADD_OPTIONS_VERSION: c_uint = 1;
+
+git_enum! {
+ pub enum git_worktree_prune_t {
+ /* Prune working tree even if working tree is valid */
+ GIT_WORKTREE_PRUNE_VALID = 1 << 0,
+ /* Prune working tree even if it is locked */
+ GIT_WORKTREE_PRUNE_LOCKED = 1 << 1,
+ /* Prune checked out working tree */
+ GIT_WORKTREE_PRUNE_WORKING_TREE = 1 << 2,
+ }
+}
+
+#[repr(C)]
+pub struct git_worktree_prune_options {
+ pub version: c_uint,
+ pub flags: u32,
+}
+
+pub const GIT_WORKTREE_PRUNE_OPTIONS_VERSION: c_uint = 1;
+
+pub type git_repository_mergehead_foreach_cb =
+ Option<extern "C" fn(oid: *const git_oid, payload: *mut c_void) -> c_int>;
+
+pub type git_repository_fetchhead_foreach_cb = Option<
+ extern "C" fn(*const c_char, *const c_char, *const git_oid, c_uint, *mut c_void) -> c_int,
+>;
+
+git_enum! {
+ pub enum git_trace_level_t {
+ /* No tracing will be performed. */
+ GIT_TRACE_NONE = 0,
+
+ /* Severe errors that may impact the program's execution */
+ GIT_TRACE_FATAL = 1,
+
+ /* Errors that do not impact the program's execution */
+ GIT_TRACE_ERROR = 2,
+
+ /* Warnings that suggest abnormal data */
+ GIT_TRACE_WARN = 3,
+
+ /* Informational messages about program execution */
+ GIT_TRACE_INFO = 4,
+
+ /* Detailed data that allows for debugging */
+ GIT_TRACE_DEBUG = 5,
+
+ /* Exceptionally detailed debugging data */
+ GIT_TRACE_TRACE = 6,
+ }
+}
+
+pub type git_trace_cb = Option<extern "C" fn(level: git_trace_level_t, msg: *const c_char)>;
+
+git_enum! {
+ pub enum git_feature_t {
+ GIT_FEATURE_THREADS = 1 << 0,
+ GIT_FEATURE_HTTPS = 1 << 1,
+ GIT_FEATURE_SSH = 1 << 2,
+ GIT_FEATURE_NSEC = 1 << 3,
+ }
+}
+
+#[repr(C)]
+pub struct git_message_trailer {
+ pub key: *const c_char,
+ pub value: *const c_char,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct git_message_trailer_array {
+ pub trailers: *mut git_message_trailer,
+ pub count: size_t,
+ pub _trailer_block: *mut c_char,
+}
+
+#[repr(C)]
+pub struct git_email_create_options {
+ pub version: c_uint,
+ pub flags: u32,
+ pub diff_opts: git_diff_options,
+ pub diff_find_opts: git_diff_find_options,
+ pub subject_prefix: *const c_char,
+ pub start_number: usize,
+ pub reroll_number: usize,
+}
+
+pub const GIT_EMAIL_CREATE_OPTIONS_VERSION: c_uint = 1;
+
+git_enum! {
+ pub enum git_email_create_flags_t {
+ GIT_EMAIL_CREATE_DEFAULT = 0,
+ GIT_EMAIL_CREATE_OMIT_NUMBERS = 1 << 0,
+ GIT_EMAIL_CREATE_ALWAYS_NUMBER = 1 << 1,
+ GIT_EMAIL_CREATE_NO_RENAMES = 1 << 2,
+ }
+}
+
+extern "C" {
+ // threads
+ pub fn git_libgit2_init() -> c_int;
+ pub fn git_libgit2_shutdown() -> c_int;
+
+ // repository
+ pub fn git_repository_new(out: *mut *mut git_repository) -> c_int;
+ pub fn git_repository_free(repo: *mut git_repository);
+ pub fn git_repository_open(repo: *mut *mut git_repository, path: *const c_char) -> c_int;
+ pub fn git_repository_open_bare(repo: *mut *mut git_repository, path: *const c_char) -> c_int;
+ pub fn git_repository_open_ext(
+ repo: *mut *mut git_repository,
+ path: *const c_char,
+ flags: c_uint,
+ ceiling_dirs: *const c_char,
+ ) -> c_int;
+ pub fn git_repository_open_from_worktree(
+ repo: *mut *mut git_repository,
+ worktree: *mut git_worktree,
+ ) -> c_int;
+ pub fn git_repository_wrap_odb(repo: *mut *mut git_repository, odb: *mut git_odb) -> c_int;
+ pub fn git_repository_init(
+ repo: *mut *mut git_repository,
+ path: *const c_char,
+ is_bare: c_uint,
+ ) -> c_int;
+ pub fn git_repository_init_ext(
+ out: *mut *mut git_repository,
+ repo_path: *const c_char,
+ opts: *mut git_repository_init_options,
+ ) -> c_int;
+ pub fn git_repository_init_init_options(
+ opts: *mut git_repository_init_options,
+ version: c_uint,
+ ) -> c_int;
+ pub fn git_repository_get_namespace(repo: *mut git_repository) -> *const c_char;
+ pub fn git_repository_set_namespace(
+ repo: *mut git_repository,
+ namespace: *const c_char,
+ ) -> c_int;
+ pub fn git_repository_head(out: *mut *mut git_reference, repo: *mut git_repository) -> c_int;
+ pub fn git_repository_set_head(repo: *mut git_repository, refname: *const c_char) -> c_int;
+
+ pub fn git_repository_head_detached(repo: *mut git_repository) -> c_int;
+ pub fn git_repository_set_head_detached(
+ repo: *mut git_repository,
+ commitish: *const git_oid,
+ ) -> c_int;
+ pub fn git_repository_set_head_detached_from_annotated(
+ repo: *mut git_repository,
+ commitish: *const git_annotated_commit,
+ ) -> c_int;
+ pub fn git_repository_set_bare(repo: *mut git_repository) -> c_int;
+ pub fn git_repository_is_worktree(repo: *const git_repository) -> c_int;
+ pub fn git_repository_is_bare(repo: *const git_repository) -> c_int;
+ pub fn git_repository_is_empty(repo: *mut git_repository) -> c_int;
+ pub fn git_repository_is_shallow(repo: *mut git_repository) -> c_int;
+ pub fn git_repository_path(repo: *const git_repository) -> *const c_char;
+ pub fn git_repository_state(repo: *mut git_repository) -> c_int;
+ pub fn git_repository_workdir(repo: *const git_repository) -> *const c_char;
+ pub fn git_repository_set_workdir(
+ repo: *mut git_repository,
+ workdir: *const c_char,
+ update_gitlink: c_int,
+ ) -> c_int;
+ pub fn git_repository_index(out: *mut *mut git_index, repo: *mut git_repository) -> c_int;
+ pub fn git_repository_set_index(repo: *mut git_repository, index: *mut git_index) -> c_int;
+
+ pub fn git_repository_message(buf: *mut git_buf, repo: *mut git_repository) -> c_int;
+
+ pub fn git_repository_message_remove(repo: *mut git_repository) -> c_int;
+ pub fn git_repository_config(out: *mut *mut git_config, repo: *mut git_repository) -> c_int;
+ pub fn git_repository_set_config(repo: *mut git_repository, config: *mut git_config) -> c_int;
+ pub fn git_repository_config_snapshot(
+ out: *mut *mut git_config,
+ repo: *mut git_repository,
+ ) -> c_int;
+ pub fn git_repository_discover(
+ out: *mut git_buf,
+ start_path: *const c_char,
+ across_fs: c_int,
+ ceiling_dirs: *const c_char,
+ ) -> c_int;
+ pub fn git_repository_set_odb(repo: *mut git_repository, odb: *mut git_odb) -> c_int;
+
+ pub fn git_repository_refdb(out: *mut *mut git_refdb, repo: *mut git_repository) -> c_int;
+ pub fn git_repository_set_refdb(repo: *mut git_repository, refdb: *mut git_refdb) -> c_int;
+
+ pub fn git_repository_reinit_filesystem(
+ repo: *mut git_repository,
+ recurse_submodules: c_int,
+ ) -> c_int;
+ pub fn git_repository_mergehead_foreach(
+ repo: *mut git_repository,
+ callback: git_repository_mergehead_foreach_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_repository_fetchhead_foreach(
+ repo: *mut git_repository,
+ callback: git_repository_fetchhead_foreach_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_ignore_add_rule(repo: *mut git_repository, rules: *const c_char) -> c_int;
+ pub fn git_ignore_clear_internal_rules(repo: *mut git_repository) -> c_int;
+ pub fn git_ignore_path_is_ignored(
+ ignored: *mut c_int,
+ repo: *mut git_repository,
+ path: *const c_char,
+ ) -> c_int;
+
+ // revparse
+ pub fn git_revparse(
+ revspec: *mut git_revspec,
+ repo: *mut git_repository,
+ spec: *const c_char,
+ ) -> c_int;
+ pub fn git_revparse_single(
+ out: *mut *mut git_object,
+ repo: *mut git_repository,
+ spec: *const c_char,
+ ) -> c_int;
+ pub fn git_revparse_ext(
+ object_out: *mut *mut git_object,
+ reference_out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ spec: *const c_char,
+ ) -> c_int;
+
+ // object
+ pub fn git_object_dup(dest: *mut *mut git_object, source: *mut git_object) -> c_int;
+ pub fn git_object_id(obj: *const git_object) -> *const git_oid;
+ pub fn git_object_free(object: *mut git_object);
+ pub fn git_object_lookup(
+ dest: *mut *mut git_object,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ kind: git_object_t,
+ ) -> c_int;
+ pub fn git_object_type(obj: *const git_object) -> git_object_t;
+ pub fn git_object_peel(
+ peeled: *mut *mut git_object,
+ object: *const git_object,
+ target_type: git_object_t,
+ ) -> c_int;
+ pub fn git_object_short_id(out: *mut git_buf, obj: *const git_object) -> c_int;
+ pub fn git_object_type2string(kind: git_object_t) -> *const c_char;
+ pub fn git_object_string2type(s: *const c_char) -> git_object_t;
+ pub fn git_object_typeisloose(kind: git_object_t) -> c_int;
+
+ // oid
+ pub fn git_oid_fromraw(out: *mut git_oid, raw: *const c_uchar) -> c_int;
+ pub fn git_oid_fromstrn(out: *mut git_oid, str: *const c_char, len: size_t) -> c_int;
+ pub fn git_oid_tostr(out: *mut c_char, n: size_t, id: *const git_oid) -> *mut c_char;
+ pub fn git_oid_cmp(a: *const git_oid, b: *const git_oid) -> c_int;
+ pub fn git_oid_equal(a: *const git_oid, b: *const git_oid) -> c_int;
+ pub fn git_oid_streq(id: *const git_oid, str: *const c_char) -> c_int;
+ pub fn git_oid_iszero(id: *const git_oid) -> c_int;
+
+ // error
+ pub fn git_error_last() -> *const git_error;
+ pub fn git_error_clear();
+ pub fn git_error_set_str(error_class: c_int, string: *const c_char) -> c_int;
+
+ // remote
+ pub fn git_remote_create(
+ out: *mut *mut git_remote,
+ repo: *mut git_repository,
+ name: *const c_char,
+ url: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_create_with_fetchspec(
+ out: *mut *mut git_remote,
+ repo: *mut git_repository,
+ name: *const c_char,
+ url: *const c_char,
+ fetch: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_lookup(
+ out: *mut *mut git_remote,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_create_anonymous(
+ out: *mut *mut git_remote,
+ repo: *mut git_repository,
+ url: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_create_detached(out: *mut *mut git_remote, url: *const c_char) -> c_int;
+ pub fn git_remote_delete(repo: *mut git_repository, name: *const c_char) -> c_int;
+ pub fn git_remote_free(remote: *mut git_remote);
+ pub fn git_remote_name(remote: *const git_remote) -> *const c_char;
+ pub fn git_remote_pushurl(remote: *const git_remote) -> *const c_char;
+ pub fn git_remote_refspec_count(remote: *const git_remote) -> size_t;
+ pub fn git_remote_url(remote: *const git_remote) -> *const c_char;
+ pub fn git_remote_connect(
+ remote: *mut git_remote,
+ dir: git_direction,
+ callbacks: *const git_remote_callbacks,
+ proxy_opts: *const git_proxy_options,
+ custom_headers: *const git_strarray,
+ ) -> c_int;
+ pub fn git_remote_connected(remote: *const git_remote) -> c_int;
+ pub fn git_remote_disconnect(remote: *mut git_remote) -> c_int;
+ pub fn git_remote_add_fetch(
+ repo: *mut git_repository,
+ remote: *const c_char,
+ refspec: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_add_push(
+ repo: *mut git_repository,
+ remote: *const c_char,
+ refspec: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_download(
+ remote: *mut git_remote,
+ refspecs: *const git_strarray,
+ opts: *const git_fetch_options,
+ ) -> c_int;
+ pub fn git_remote_stop(remote: *mut git_remote) -> c_int;
+ pub fn git_remote_dup(dest: *mut *mut git_remote, source: *mut git_remote) -> c_int;
+ pub fn git_remote_get_fetch_refspecs(
+ array: *mut git_strarray,
+ remote: *const git_remote,
+ ) -> c_int;
+ pub fn git_remote_get_push_refspecs(
+ array: *mut git_strarray,
+ remote: *const git_remote,
+ ) -> c_int;
+ pub fn git_remote_get_refspec(remote: *const git_remote, n: size_t) -> *const git_refspec;
+ pub fn git_remote_is_valid_name(remote_name: *const c_char) -> c_int;
+ pub fn git_remote_name_is_valid(valid: *mut c_int, remote_name: *const c_char) -> c_int;
+ pub fn git_remote_list(out: *mut git_strarray, repo: *mut git_repository) -> c_int;
+ pub fn git_remote_rename(
+ problems: *mut git_strarray,
+ repo: *mut git_repository,
+ name: *const c_char,
+ new_name: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_fetch(
+ remote: *mut git_remote,
+ refspecs: *const git_strarray,
+ opts: *const git_fetch_options,
+ reflog_message: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_push(
+ remote: *mut git_remote,
+ refspecs: *const git_strarray,
+ opts: *const git_push_options,
+ ) -> c_int;
+ pub fn git_remote_update_tips(
+ remote: *mut git_remote,
+ callbacks: *const git_remote_callbacks,
+ update_fetchead: c_int,
+ download_tags: git_remote_autotag_option_t,
+ reflog_message: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_set_url(
+ repo: *mut git_repository,
+ remote: *const c_char,
+ url: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_set_pushurl(
+ repo: *mut git_repository,
+ remote: *const c_char,
+ pushurl: *const c_char,
+ ) -> c_int;
+ pub fn git_remote_init_callbacks(opts: *mut git_remote_callbacks, version: c_uint) -> c_int;
+ pub fn git_fetch_init_options(opts: *mut git_fetch_options, version: c_uint) -> c_int;
+ pub fn git_remote_stats(remote: *mut git_remote) -> *const git_indexer_progress;
+ pub fn git_remote_ls(
+ out: *mut *mut *const git_remote_head,
+ size: *mut size_t,
+ remote: *mut git_remote,
+ ) -> c_int;
+ pub fn git_remote_set_autotag(
+ repo: *mut git_repository,
+ remote: *const c_char,
+ value: git_remote_autotag_option_t,
+ ) -> c_int;
+ pub fn git_remote_prune(
+ remote: *mut git_remote,
+ callbacks: *const git_remote_callbacks,
+ ) -> c_int;
+ pub fn git_remote_default_branch(out: *mut git_buf, remote: *mut git_remote) -> c_int;
+
+ // refspec
+ pub fn git_refspec_direction(spec: *const git_refspec) -> git_direction;
+ pub fn git_refspec_dst(spec: *const git_refspec) -> *const c_char;
+ pub fn git_refspec_dst_matches(spec: *const git_refspec, refname: *const c_char) -> c_int;
+ pub fn git_refspec_src(spec: *const git_refspec) -> *const c_char;
+ pub fn git_refspec_src_matches(spec: *const git_refspec, refname: *const c_char) -> c_int;
+ pub fn git_refspec_force(spec: *const git_refspec) -> c_int;
+ pub fn git_refspec_string(spec: *const git_refspec) -> *const c_char;
+ pub fn git_refspec_transform(
+ out: *mut git_buf,
+ spec: *const git_refspec,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_refspec_rtransform(
+ out: *mut git_buf,
+ spec: *const git_refspec,
+ name: *const c_char,
+ ) -> c_int;
+
+ // strarray
+ pub fn git_strarray_free(array: *mut git_strarray);
+
+ // oidarray
+ pub fn git_oidarray_free(array: *mut git_oidarray);
+
+ // signature
+ pub fn git_signature_default(out: *mut *mut git_signature, repo: *mut git_repository) -> c_int;
+ pub fn git_signature_free(sig: *mut git_signature);
+ pub fn git_signature_new(
+ out: *mut *mut git_signature,
+ name: *const c_char,
+ email: *const c_char,
+ time: git_time_t,
+ offset: c_int,
+ ) -> c_int;
+ pub fn git_signature_now(
+ out: *mut *mut git_signature,
+ name: *const c_char,
+ email: *const c_char,
+ ) -> c_int;
+ pub fn git_signature_dup(dest: *mut *mut git_signature, sig: *const git_signature) -> c_int;
+
+ // status
+ pub fn git_status_list_new(
+ out: *mut *mut git_status_list,
+ repo: *mut git_repository,
+ options: *const git_status_options,
+ ) -> c_int;
+ pub fn git_status_list_entrycount(list: *mut git_status_list) -> size_t;
+ pub fn git_status_byindex(
+ statuslist: *mut git_status_list,
+ idx: size_t,
+ ) -> *const git_status_entry;
+ pub fn git_status_list_free(list: *mut git_status_list);
+ pub fn git_status_init_options(opts: *mut git_status_options, version: c_uint) -> c_int;
+ pub fn git_status_file(
+ status_flags: *mut c_uint,
+ repo: *mut git_repository,
+ path: *const c_char,
+ ) -> c_int;
+ pub fn git_status_should_ignore(
+ ignored: *mut c_int,
+ repo: *mut git_repository,
+ path: *const c_char,
+ ) -> c_int;
+
+ // clone
+ pub fn git_clone(
+ out: *mut *mut git_repository,
+ url: *const c_char,
+ local_path: *const c_char,
+ options: *const git_clone_options,
+ ) -> c_int;
+ pub fn git_clone_init_options(opts: *mut git_clone_options, version: c_uint) -> c_int;
+
+ // reset
+ pub fn git_reset(
+ repo: *mut git_repository,
+ target: *const git_object,
+ reset_type: git_reset_t,
+ checkout_opts: *const git_checkout_options,
+ ) -> c_int;
+ pub fn git_reset_default(
+ repo: *mut git_repository,
+ target: *const git_object,
+ pathspecs: *const git_strarray,
+ ) -> c_int;
+
+ // reference
+ pub fn git_reference_cmp(ref1: *const git_reference, ref2: *const git_reference) -> c_int;
+ pub fn git_reference_delete(r: *mut git_reference) -> c_int;
+ pub fn git_reference_free(r: *mut git_reference);
+ pub fn git_reference_is_branch(r: *const git_reference) -> c_int;
+ pub fn git_reference_is_note(r: *const git_reference) -> c_int;
+ pub fn git_reference_is_remote(r: *const git_reference) -> c_int;
+ pub fn git_reference_is_tag(r: *const git_reference) -> c_int;
+ pub fn git_reference_is_valid_name(name: *const c_char) -> c_int;
+ pub fn git_reference_name_is_valid(valid: *mut c_int, refname: *const c_char) -> c_int;
+ pub fn git_reference_lookup(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_dwim(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ refname: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_name(r: *const git_reference) -> *const c_char;
+ pub fn git_reference_name_to_id(
+ out: *mut git_oid,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_peel(
+ out: *mut *mut git_object,
+ r: *const git_reference,
+ otype: git_object_t,
+ ) -> c_int;
+ pub fn git_reference_rename(
+ new_ref: *mut *mut git_reference,
+ r: *mut git_reference,
+ new_name: *const c_char,
+ force: c_int,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_resolve(out: *mut *mut git_reference, r: *const git_reference) -> c_int;
+ pub fn git_reference_shorthand(r: *const git_reference) -> *const c_char;
+ pub fn git_reference_symbolic_target(r: *const git_reference) -> *const c_char;
+ pub fn git_reference_target(r: *const git_reference) -> *const git_oid;
+ pub fn git_reference_target_peel(r: *const git_reference) -> *const git_oid;
+ pub fn git_reference_set_target(
+ out: *mut *mut git_reference,
+ r: *mut git_reference,
+ id: *const git_oid,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_symbolic_set_target(
+ out: *mut *mut git_reference,
+ r: *mut git_reference,
+ target: *const c_char,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_type(r: *const git_reference) -> git_reference_t;
+ pub fn git_reference_iterator_new(
+ out: *mut *mut git_reference_iterator,
+ repo: *mut git_repository,
+ ) -> c_int;
+ pub fn git_reference_iterator_glob_new(
+ out: *mut *mut git_reference_iterator,
+ repo: *mut git_repository,
+ glob: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_iterator_free(iter: *mut git_reference_iterator);
+ pub fn git_reference_next(
+ out: *mut *mut git_reference,
+ iter: *mut git_reference_iterator,
+ ) -> c_int;
+ pub fn git_reference_next_name(
+ out: *mut *const c_char,
+ iter: *mut git_reference_iterator,
+ ) -> c_int;
+ pub fn git_reference_create(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ name: *const c_char,
+ id: *const git_oid,
+ force: c_int,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_symbolic_create(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ name: *const c_char,
+ target: *const c_char,
+ force: c_int,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_create_matching(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ name: *const c_char,
+ id: *const git_oid,
+ force: c_int,
+ current_id: *const git_oid,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_symbolic_create_matching(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ name: *const c_char,
+ target: *const c_char,
+ force: c_int,
+ current_id: *const c_char,
+ log_message: *const c_char,
+ ) -> c_int;
+ pub fn git_reference_has_log(repo: *mut git_repository, name: *const c_char) -> c_int;
+ pub fn git_reference_ensure_log(repo: *mut git_repository, name: *const c_char) -> c_int;
+ pub fn git_reference_normalize_name(
+ buffer_out: *mut c_char,
+ buffer_size: size_t,
+ name: *const c_char,
+ flags: u32,
+ ) -> c_int;
+
+ // stash
+ pub fn git_stash_save(
+ out: *mut git_oid,
+ repo: *mut git_repository,
+ stasher: *const git_signature,
+ message: *const c_char,
+ flags: c_uint,
+ ) -> c_int;
+
+ pub fn git_stash_apply_init_options(
+ opts: *mut git_stash_apply_options,
+ version: c_uint,
+ ) -> c_int;
+
+ pub fn git_stash_apply(
+ repo: *mut git_repository,
+ index: size_t,
+ options: *const git_stash_apply_options,
+ ) -> c_int;
+
+ pub fn git_stash_foreach(
+ repo: *mut git_repository,
+ callback: git_stash_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+
+ pub fn git_stash_drop(repo: *mut git_repository, index: size_t) -> c_int;
+
+ pub fn git_stash_pop(
+ repo: *mut git_repository,
+ index: size_t,
+ options: *const git_stash_apply_options,
+ ) -> c_int;
+
+ // submodules
+ pub fn git_submodule_add_finalize(submodule: *mut git_submodule) -> c_int;
+ pub fn git_submodule_add_setup(
+ submodule: *mut *mut git_submodule,
+ repo: *mut git_repository,
+ url: *const c_char,
+ path: *const c_char,
+ use_gitlink: c_int,
+ ) -> c_int;
+ pub fn git_submodule_add_to_index(submodule: *mut git_submodule, write_index: c_int) -> c_int;
+ pub fn git_submodule_branch(submodule: *mut git_submodule) -> *const c_char;
+ pub fn git_submodule_clone(
+ repo: *mut *mut git_repository,
+ submodule: *mut git_submodule,
+ opts: *const git_submodule_update_options,
+ ) -> c_int;
+ pub fn git_submodule_foreach(
+ repo: *mut git_repository,
+ callback: git_submodule_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_submodule_free(submodule: *mut git_submodule);
+ pub fn git_submodule_head_id(submodule: *mut git_submodule) -> *const git_oid;
+ pub fn git_submodule_ignore(submodule: *mut git_submodule) -> git_submodule_ignore_t;
+ pub fn git_submodule_index_id(submodule: *mut git_submodule) -> *const git_oid;
+ pub fn git_submodule_init(submodule: *mut git_submodule, overwrite: c_int) -> c_int;
+ pub fn git_submodule_repo_init(
+ repo: *mut *mut git_repository,
+ submodule: *const git_submodule,
+ use_gitlink: c_int,
+ ) -> c_int;
+ pub fn git_submodule_location(status: *mut c_uint, submodule: *mut git_submodule) -> c_int;
+ pub fn git_submodule_lookup(
+ out: *mut *mut git_submodule,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_submodule_name(submodule: *mut git_submodule) -> *const c_char;
+ pub fn git_submodule_open(
+ repo: *mut *mut git_repository,
+ submodule: *mut git_submodule,
+ ) -> c_int;
+ pub fn git_submodule_path(submodule: *mut git_submodule) -> *const c_char;
+ pub fn git_submodule_reload(submodule: *mut git_submodule, force: c_int) -> c_int;
+ pub fn git_submodule_set_ignore(
+ repo: *mut git_repository,
+ name: *const c_char,
+ ignore: git_submodule_ignore_t,
+ ) -> c_int;
+ pub fn git_submodule_set_update(
+ repo: *mut git_repository,
+ name: *const c_char,
+ update: git_submodule_update_t,
+ ) -> c_int;
+ pub fn git_submodule_set_url(
+ repo: *mut git_repository,
+ name: *const c_char,
+ url: *const c_char,
+ ) -> c_int;
+ pub fn git_submodule_sync(submodule: *mut git_submodule) -> c_int;
+ pub fn git_submodule_update_strategy(submodule: *mut git_submodule) -> git_submodule_update_t;
+ pub fn git_submodule_update(
+ submodule: *mut git_submodule,
+ init: c_int,
+ options: *mut git_submodule_update_options,
+ ) -> c_int;
+ pub fn git_submodule_update_init_options(
+ options: *mut git_submodule_update_options,
+ version: c_uint,
+ ) -> c_int;
+ pub fn git_submodule_url(submodule: *mut git_submodule) -> *const c_char;
+ pub fn git_submodule_wd_id(submodule: *mut git_submodule) -> *const git_oid;
+ pub fn git_submodule_status(
+ status: *mut c_uint,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ignore: git_submodule_ignore_t,
+ ) -> c_int;
+ pub fn git_submodule_set_branch(
+ repo: *mut git_repository,
+ name: *const c_char,
+ branch: *const c_char,
+ ) -> c_int;
+
+ // blob
+ pub fn git_blob_free(blob: *mut git_blob);
+ pub fn git_blob_id(blob: *const git_blob) -> *const git_oid;
+ pub fn git_blob_is_binary(blob: *const git_blob) -> c_int;
+ pub fn git_blob_lookup(
+ blob: *mut *mut git_blob,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ ) -> c_int;
+ pub fn git_blob_lookup_prefix(
+ blob: *mut *mut git_blob,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_blob_rawcontent(blob: *const git_blob) -> *const c_void;
+ pub fn git_blob_rawsize(blob: *const git_blob) -> git_object_size_t;
+ pub fn git_blob_create_frombuffer(
+ id: *mut git_oid,
+ repo: *mut git_repository,
+ buffer: *const c_void,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_blob_create_fromdisk(
+ id: *mut git_oid,
+ repo: *mut git_repository,
+ path: *const c_char,
+ ) -> c_int;
+ pub fn git_blob_create_fromworkdir(
+ id: *mut git_oid,
+ repo: *mut git_repository,
+ relative_path: *const c_char,
+ ) -> c_int;
+ pub fn git_blob_create_fromstream(
+ out: *mut *mut git_writestream,
+ repo: *mut git_repository,
+ hintpath: *const c_char,
+ ) -> c_int;
+ pub fn git_blob_create_fromstream_commit(
+ id: *mut git_oid,
+ stream: *mut git_writestream,
+ ) -> c_int;
+
+ // tree
+ pub fn git_tree_entry_byid(tree: *const git_tree, id: *const git_oid) -> *const git_tree_entry;
+ pub fn git_tree_entry_byindex(tree: *const git_tree, idx: size_t) -> *const git_tree_entry;
+ pub fn git_tree_entry_byname(
+ tree: *const git_tree,
+ filename: *const c_char,
+ ) -> *const git_tree_entry;
+ pub fn git_tree_entry_bypath(
+ out: *mut *mut git_tree_entry,
+ tree: *const git_tree,
+ filename: *const c_char,
+ ) -> c_int;
+ pub fn git_tree_entry_cmp(e1: *const git_tree_entry, e2: *const git_tree_entry) -> c_int;
+ pub fn git_tree_entry_dup(dest: *mut *mut git_tree_entry, src: *const git_tree_entry) -> c_int;
+ pub fn git_tree_entry_filemode(entry: *const git_tree_entry) -> git_filemode_t;
+ pub fn git_tree_entry_filemode_raw(entry: *const git_tree_entry) -> git_filemode_t;
+ pub fn git_tree_entry_free(entry: *mut git_tree_entry);
+ pub fn git_tree_entry_id(entry: *const git_tree_entry) -> *const git_oid;
+ pub fn git_tree_entry_name(entry: *const git_tree_entry) -> *const c_char;
+ pub fn git_tree_entry_to_object(
+ out: *mut *mut git_object,
+ repo: *mut git_repository,
+ entry: *const git_tree_entry,
+ ) -> c_int;
+ pub fn git_tree_entry_type(entry: *const git_tree_entry) -> git_object_t;
+ pub fn git_tree_entrycount(tree: *const git_tree) -> size_t;
+ pub fn git_tree_free(tree: *mut git_tree);
+ pub fn git_tree_id(tree: *const git_tree) -> *const git_oid;
+ pub fn git_tree_lookup(
+ tree: *mut *mut git_tree,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ ) -> c_int;
+ pub fn git_tree_walk(
+ tree: *const git_tree,
+ mode: git_treewalk_mode,
+ callback: git_treewalk_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_tree_create_updated(
+ out: *mut git_oid,
+ repo: *mut git_repository,
+ baseline: *mut git_tree,
+ nupdates: usize,
+ updates: *const git_tree_update,
+ ) -> c_int;
+
+ // treebuilder
+ pub fn git_treebuilder_new(
+ out: *mut *mut git_treebuilder,
+ repo: *mut git_repository,
+ source: *const git_tree,
+ ) -> c_int;
+ pub fn git_treebuilder_clear(bld: *mut git_treebuilder) -> c_int;
+ pub fn git_treebuilder_entrycount(bld: *mut git_treebuilder) -> size_t;
+ pub fn git_treebuilder_free(bld: *mut git_treebuilder);
+ pub fn git_treebuilder_get(
+ bld: *mut git_treebuilder,
+ filename: *const c_char,
+ ) -> *const git_tree_entry;
+ pub fn git_treebuilder_insert(
+ out: *mut *const git_tree_entry,
+ bld: *mut git_treebuilder,
+ filename: *const c_char,
+ id: *const git_oid,
+ filemode: git_filemode_t,
+ ) -> c_int;
+ pub fn git_treebuilder_remove(bld: *mut git_treebuilder, filename: *const c_char) -> c_int;
+ pub fn git_treebuilder_filter(
+ bld: *mut git_treebuilder,
+ filter: git_treebuilder_filter_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_treebuilder_write(id: *mut git_oid, bld: *mut git_treebuilder) -> c_int;
+
+ // buf
+ pub fn git_buf_dispose(buffer: *mut git_buf);
+ pub fn git_buf_grow(buffer: *mut git_buf, target_size: size_t) -> c_int;
+ pub fn git_buf_set(buffer: *mut git_buf, data: *const c_void, datalen: size_t) -> c_int;
+
+ // commit
+ pub fn git_commit_author(commit: *const git_commit) -> *const git_signature;
+ pub fn git_commit_author_with_mailmap(
+ out: *mut *mut git_signature,
+ commit: *const git_commit,
+ mailmap: *const git_mailmap,
+ ) -> c_int;
+ pub fn git_commit_committer(commit: *const git_commit) -> *const git_signature;
+ pub fn git_commit_committer_with_mailmap(
+ out: *mut *mut git_signature,
+ commit: *const git_commit,
+ mailmap: *const git_mailmap,
+ ) -> c_int;
+ pub fn git_commit_free(commit: *mut git_commit);
+ pub fn git_commit_id(commit: *const git_commit) -> *const git_oid;
+ pub fn git_commit_lookup(
+ commit: *mut *mut git_commit,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ ) -> c_int;
+ pub fn git_commit_message(commit: *const git_commit) -> *const c_char;
+ pub fn git_commit_message_encoding(commit: *const git_commit) -> *const c_char;
+ pub fn git_commit_message_raw(commit: *const git_commit) -> *const c_char;
+ pub fn git_commit_nth_gen_ancestor(
+ commit: *mut *mut git_commit,
+ commit: *const git_commit,
+ n: c_uint,
+ ) -> c_int;
+ pub fn git_commit_parent(
+ out: *mut *mut git_commit,
+ commit: *const git_commit,
+ n: c_uint,
+ ) -> c_int;
+ pub fn git_commit_parent_id(commit: *const git_commit, n: c_uint) -> *const git_oid;
+ pub fn git_commit_parentcount(commit: *const git_commit) -> c_uint;
+ pub fn git_commit_raw_header(commit: *const git_commit) -> *const c_char;
+ pub fn git_commit_summary(commit: *mut git_commit) -> *const c_char;
+ pub fn git_commit_body(commit: *mut git_commit) -> *const c_char;
+ pub fn git_commit_time(commit: *const git_commit) -> git_time_t;
+ pub fn git_commit_time_offset(commit: *const git_commit) -> c_int;
+ pub fn git_commit_tree(tree_out: *mut *mut git_tree, commit: *const git_commit) -> c_int;
+ pub fn git_commit_tree_id(commit: *const git_commit) -> *const git_oid;
+ pub fn git_commit_amend(
+ id: *mut git_oid,
+ commit_to_amend: *const git_commit,
+ update_ref: *const c_char,
+ author: *const git_signature,
+ committer: *const git_signature,
+ message_encoding: *const c_char,
+ message: *const c_char,
+ tree: *const git_tree,
+ ) -> c_int;
+ pub fn git_commit_create(
+ id: *mut git_oid,
+ repo: *mut git_repository,
+ update_ref: *const c_char,
+ author: *const git_signature,
+ committer: *const git_signature,
+ message_encoding: *const c_char,
+ message: *const c_char,
+ tree: *const git_tree,
+ parent_count: size_t,
+ parents: *mut *const git_commit,
+ ) -> c_int;
+ pub fn git_commit_create_buffer(
+ out: *mut git_buf,
+ repo: *mut git_repository,
+ author: *const git_signature,
+ committer: *const git_signature,
+ message_encoding: *const c_char,
+ message: *const c_char,
+ tree: *const git_tree,
+ parent_count: size_t,
+ parents: *mut *const git_commit,
+ ) -> c_int;
+ pub fn git_commit_header_field(
+ out: *mut git_buf,
+ commit: *const git_commit,
+ field: *const c_char,
+ ) -> c_int;
+ pub fn git_annotated_commit_lookup(
+ out: *mut *mut git_annotated_commit,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ ) -> c_int;
+ pub fn git_commit_create_with_signature(
+ id: *mut git_oid,
+ repo: *mut git_repository,
+ commit_content: *const c_char,
+ signature: *const c_char,
+ signature_field: *const c_char,
+ ) -> c_int;
+ pub fn git_commit_extract_signature(
+ signature: *mut git_buf,
+ signed_data: *mut git_buf,
+ repo: *mut git_repository,
+ commit_id: *mut git_oid,
+ field: *const c_char,
+ ) -> c_int;
+
+ // branch
+ pub fn git_branch_create(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ branch_name: *const c_char,
+ target: *const git_commit,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_branch_create_from_annotated(
+ ref_out: *mut *mut git_reference,
+ repository: *mut git_repository,
+ branch_name: *const c_char,
+ commit: *const git_annotated_commit,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_branch_delete(branch: *mut git_reference) -> c_int;
+ pub fn git_branch_is_head(branch: *const git_reference) -> c_int;
+ pub fn git_branch_iterator_free(iter: *mut git_branch_iterator);
+ pub fn git_branch_iterator_new(
+ iter: *mut *mut git_branch_iterator,
+ repo: *mut git_repository,
+ list_flags: git_branch_t,
+ ) -> c_int;
+ pub fn git_branch_lookup(
+ out: *mut *mut git_reference,
+ repo: *mut git_repository,
+ branch_name: *const c_char,
+ branch_type: git_branch_t,
+ ) -> c_int;
+ pub fn git_branch_move(
+ out: *mut *mut git_reference,
+ branch: *mut git_reference,
+ new_branch_name: *const c_char,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_branch_name(out: *mut *const c_char, branch: *const git_reference) -> c_int;
+ pub fn git_branch_name_is_valid(valid: *mut c_int, name: *const c_char) -> c_int;
+ pub fn git_branch_remote_name(
+ out: *mut git_buf,
+ repo: *mut git_repository,
+ refname: *const c_char,
+ ) -> c_int;
+ pub fn git_branch_next(
+ out: *mut *mut git_reference,
+ out_type: *mut git_branch_t,
+ iter: *mut git_branch_iterator,
+ ) -> c_int;
+ pub fn git_branch_set_upstream(
+ branch: *mut git_reference,
+ upstream_name: *const c_char,
+ ) -> c_int;
+ pub fn git_branch_upstream(out: *mut *mut git_reference, branch: *const git_reference)
+ -> c_int;
+ pub fn git_branch_upstream_name(
+ out: *mut git_buf,
+ repo: *mut git_repository,
+ refname: *const c_char,
+ ) -> c_int;
+ pub fn git_branch_upstream_remote(
+ out: *mut git_buf,
+ repo: *mut git_repository,
+ refname: *const c_char,
+ ) -> c_int;
+
+ // index
+ pub fn git_index_version(index: *mut git_index) -> c_uint;
+ pub fn git_index_set_version(index: *mut git_index, version: c_uint) -> c_int;
+ pub fn git_index_add(index: *mut git_index, entry: *const git_index_entry) -> c_int;
+ pub fn git_index_add_all(
+ index: *mut git_index,
+ pathspec: *const git_strarray,
+ flags: c_uint,
+ callback: git_index_matched_path_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_index_add_bypath(index: *mut git_index, path: *const c_char) -> c_int;
+ pub fn git_index_add_frombuffer(
+ index: *mut git_index,
+ entry: *const git_index_entry,
+ buffer: *const c_void,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_index_conflict_add(
+ index: *mut git_index,
+ ancestor_entry: *const git_index_entry,
+ our_entry: *const git_index_entry,
+ their_entry: *const git_index_entry,
+ ) -> c_int;
+ pub fn git_index_conflict_remove(index: *mut git_index, path: *const c_char) -> c_int;
+ pub fn git_index_conflict_get(
+ ancestor_out: *mut *const git_index_entry,
+ our_out: *mut *const git_index_entry,
+ their_out: *mut *const git_index_entry,
+ index: *mut git_index,
+ path: *const c_char,
+ ) -> c_int;
+ pub fn git_index_conflict_iterator_new(
+ iter: *mut *mut git_index_conflict_iterator,
+ index: *mut git_index,
+ ) -> c_int;
+ pub fn git_index_conflict_next(
+ ancestor_out: *mut *const git_index_entry,
+ our_out: *mut *const git_index_entry,
+ their_out: *mut *const git_index_entry,
+ iter: *mut git_index_conflict_iterator,
+ ) -> c_int;
+ pub fn git_index_conflict_iterator_free(iter: *mut git_index_conflict_iterator);
+ pub fn git_index_clear(index: *mut git_index) -> c_int;
+ pub fn git_index_entry_stage(entry: *const git_index_entry) -> c_int;
+ pub fn git_index_entrycount(entry: *const git_index) -> size_t;
+ pub fn git_index_find(at_pos: *mut size_t, index: *mut git_index, path: *const c_char)
+ -> c_int;
+ pub fn git_index_find_prefix(
+ at_pos: *mut size_t,
+ index: *mut git_index,
+ prefix: *const c_char,
+ ) -> c_int;
+ pub fn git_index_free(index: *mut git_index);
+ pub fn git_index_get_byindex(index: *mut git_index, n: size_t) -> *const git_index_entry;
+ pub fn git_index_get_bypath(
+ index: *mut git_index,
+ path: *const c_char,
+ stage: c_int,
+ ) -> *const git_index_entry;
+ pub fn git_index_has_conflicts(index: *const git_index) -> c_int;
+ pub fn git_index_new(index: *mut *mut git_index) -> c_int;
+ pub fn git_index_open(index: *mut *mut git_index, index_path: *const c_char) -> c_int;
+ pub fn git_index_path(index: *const git_index) -> *const c_char;
+ pub fn git_index_read(index: *mut git_index, force: c_int) -> c_int;
+ pub fn git_index_read_tree(index: *mut git_index, tree: *const git_tree) -> c_int;
+ pub fn git_index_remove(index: *mut git_index, path: *const c_char, stage: c_int) -> c_int;
+ pub fn git_index_remove_all(
+ index: *mut git_index,
+ pathspec: *const git_strarray,
+ callback: git_index_matched_path_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_index_remove_bypath(index: *mut git_index, path: *const c_char) -> c_int;
+ pub fn git_index_remove_directory(
+ index: *mut git_index,
+ dir: *const c_char,
+ stage: c_int,
+ ) -> c_int;
+ pub fn git_index_update_all(
+ index: *mut git_index,
+ pathspec: *const git_strarray,
+ callback: git_index_matched_path_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_index_write(index: *mut git_index) -> c_int;
+ pub fn git_index_write_tree(out: *mut git_oid, index: *mut git_index) -> c_int;
+ pub fn git_index_write_tree_to(
+ out: *mut git_oid,
+ index: *mut git_index,
+ repo: *mut git_repository,
+ ) -> c_int;
+
+ // config
+ pub fn git_config_add_file_ondisk(
+ cfg: *mut git_config,
+ path: *const c_char,
+ level: git_config_level_t,
+ repo: *const git_repository,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_config_delete_entry(cfg: *mut git_config, name: *const c_char) -> c_int;
+ pub fn git_config_delete_multivar(
+ cfg: *mut git_config,
+ name: *const c_char,
+ regexp: *const c_char,
+ ) -> c_int;
+ pub fn git_config_find_programdata(out: *mut git_buf) -> c_int;
+ pub fn git_config_find_global(out: *mut git_buf) -> c_int;
+ pub fn git_config_find_system(out: *mut git_buf) -> c_int;
+ pub fn git_config_find_xdg(out: *mut git_buf) -> c_int;
+ pub fn git_config_free(cfg: *mut git_config);
+ pub fn git_config_get_bool(
+ out: *mut c_int,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_get_entry(
+ out: *mut *mut git_config_entry,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_get_int32(
+ out: *mut i32,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_get_int64(
+ out: *mut i64,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_get_string(
+ out: *mut *const c_char,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_get_string_buf(
+ out: *mut git_buf,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_get_path(
+ out: *mut git_buf,
+ cfg: *const git_config,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_config_iterator_free(iter: *mut git_config_iterator);
+ pub fn git_config_iterator_glob_new(
+ out: *mut *mut git_config_iterator,
+ cfg: *const git_config,
+ regexp: *const c_char,
+ ) -> c_int;
+ pub fn git_config_iterator_new(
+ out: *mut *mut git_config_iterator,
+ cfg: *const git_config,
+ ) -> c_int;
+ pub fn git_config_new(out: *mut *mut git_config) -> c_int;
+ pub fn git_config_next(
+ entry: *mut *mut git_config_entry,
+ iter: *mut git_config_iterator,
+ ) -> c_int;
+ pub fn git_config_open_default(out: *mut *mut git_config) -> c_int;
+ pub fn git_config_open_global(out: *mut *mut git_config, config: *mut git_config) -> c_int;
+ pub fn git_config_open_level(
+ out: *mut *mut git_config,
+ parent: *const git_config,
+ level: git_config_level_t,
+ ) -> c_int;
+ pub fn git_config_open_ondisk(out: *mut *mut git_config, path: *const c_char) -> c_int;
+ pub fn git_config_parse_bool(out: *mut c_int, value: *const c_char) -> c_int;
+ pub fn git_config_parse_int32(out: *mut i32, value: *const c_char) -> c_int;
+ pub fn git_config_parse_int64(out: *mut i64, value: *const c_char) -> c_int;
+ pub fn git_config_set_bool(cfg: *mut git_config, name: *const c_char, value: c_int) -> c_int;
+ pub fn git_config_set_int32(cfg: *mut git_config, name: *const c_char, value: i32) -> c_int;
+ pub fn git_config_set_int64(cfg: *mut git_config, name: *const c_char, value: i64) -> c_int;
+ pub fn git_config_set_multivar(
+ cfg: *mut git_config,
+ name: *const c_char,
+ regexp: *const c_char,
+ value: *const c_char,
+ ) -> c_int;
+ pub fn git_config_set_string(
+ cfg: *mut git_config,
+ name: *const c_char,
+ value: *const c_char,
+ ) -> c_int;
+ pub fn git_config_snapshot(out: *mut *mut git_config, config: *mut git_config) -> c_int;
+ pub fn git_config_entry_free(entry: *mut git_config_entry);
+ pub fn git_config_multivar_iterator_new(
+ out: *mut *mut git_config_iterator,
+ cfg: *const git_config,
+ name: *const c_char,
+ regexp: *const c_char,
+ ) -> c_int;
+
+ // attr
+ pub fn git_attr_get(
+ value_out: *mut *const c_char,
+ repo: *mut git_repository,
+ flags: u32,
+ path: *const c_char,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_attr_value(value: *const c_char) -> git_attr_value_t;
+
+ // cred
+ pub fn git_cred_default_new(out: *mut *mut git_cred) -> c_int;
+ pub fn git_cred_has_username(cred: *mut git_cred) -> c_int;
+ pub fn git_cred_ssh_custom_new(
+ out: *mut *mut git_cred,
+ username: *const c_char,
+ publickey: *const c_char,
+ publickey_len: size_t,
+ sign_callback: git_cred_sign_callback,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_cred_ssh_interactive_new(
+ out: *mut *mut git_cred,
+ username: *const c_char,
+ prompt_callback: git_cred_ssh_interactive_callback,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_cred_ssh_key_from_agent(out: *mut *mut git_cred, username: *const c_char) -> c_int;
+ pub fn git_cred_ssh_key_new(
+ out: *mut *mut git_cred,
+ username: *const c_char,
+ publickey: *const c_char,
+ privatekey: *const c_char,
+ passphrase: *const c_char,
+ ) -> c_int;
+ pub fn git_cred_ssh_key_memory_new(
+ out: *mut *mut git_cred,
+ username: *const c_char,
+ publickey: *const c_char,
+ privatekey: *const c_char,
+ passphrase: *const c_char,
+ ) -> c_int;
+ pub fn git_cred_userpass(
+ cred: *mut *mut git_cred,
+ url: *const c_char,
+ user_from_url: *const c_char,
+ allowed_types: c_uint,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_cred_userpass_plaintext_new(
+ out: *mut *mut git_cred,
+ username: *const c_char,
+ password: *const c_char,
+ ) -> c_int;
+ pub fn git_cred_username_new(cred: *mut *mut git_cred, username: *const c_char) -> c_int;
+
+ // tags
+ pub fn git_tag_annotation_create(
+ oid: *mut git_oid,
+ repo: *mut git_repository,
+ tag_name: *const c_char,
+ target: *const git_object,
+ tagger: *const git_signature,
+ message: *const c_char,
+ ) -> c_int;
+ pub fn git_tag_create(
+ oid: *mut git_oid,
+ repo: *mut git_repository,
+ tag_name: *const c_char,
+ target: *const git_object,
+ tagger: *const git_signature,
+ message: *const c_char,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_tag_create_frombuffer(
+ oid: *mut git_oid,
+ repo: *mut git_repository,
+ buffer: *const c_char,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_tag_create_lightweight(
+ oid: *mut git_oid,
+ repo: *mut git_repository,
+ tag_name: *const c_char,
+ target: *const git_object,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_tag_delete(repo: *mut git_repository, tag_name: *const c_char) -> c_int;
+ pub fn git_tag_foreach(
+ repo: *mut git_repository,
+ callback: git_tag_foreach_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_tag_free(tag: *mut git_tag);
+ pub fn git_tag_id(tag: *const git_tag) -> *const git_oid;
+ pub fn git_tag_list(tag_names: *mut git_strarray, repo: *mut git_repository) -> c_int;
+ pub fn git_tag_list_match(
+ tag_names: *mut git_strarray,
+ pattern: *const c_char,
+ repo: *mut git_repository,
+ ) -> c_int;
+ pub fn git_tag_lookup(
+ out: *mut *mut git_tag,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ ) -> c_int;
+ pub fn git_tag_lookup_prefix(
+ out: *mut *mut git_tag,
+ repo: *mut git_repository,
+ id: *const git_oid,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_tag_message(tag: *const git_tag) -> *const c_char;
+ pub fn git_tag_name(tag: *const git_tag) -> *const c_char;
+ pub fn git_tag_peel(tag_target_out: *mut *mut git_object, tag: *const git_tag) -> c_int;
+ pub fn git_tag_tagger(tag: *const git_tag) -> *const git_signature;
+ pub fn git_tag_target(target_out: *mut *mut git_object, tag: *const git_tag) -> c_int;
+ pub fn git_tag_target_id(tag: *const git_tag) -> *const git_oid;
+ pub fn git_tag_target_type(tag: *const git_tag) -> git_object_t;
+ pub fn git_tag_name_is_valid(valid: *mut c_int, tag_name: *const c_char) -> c_int;
+
+ // checkout
+ pub fn git_checkout_head(repo: *mut git_repository, opts: *const git_checkout_options)
+ -> c_int;
+ pub fn git_checkout_index(
+ repo: *mut git_repository,
+ index: *mut git_index,
+ opts: *const git_checkout_options,
+ ) -> c_int;
+ pub fn git_checkout_tree(
+ repo: *mut git_repository,
+ treeish: *const git_object,
+ opts: *const git_checkout_options,
+ ) -> c_int;
+ pub fn git_checkout_init_options(opts: *mut git_checkout_options, version: c_uint) -> c_int;
+
+ // merge
+ pub fn git_annotated_commit_id(commit: *const git_annotated_commit) -> *const git_oid;
+ pub fn git_annotated_commit_ref(commit: *const git_annotated_commit) -> *const c_char;
+ pub fn git_annotated_commit_from_ref(
+ out: *mut *mut git_annotated_commit,
+ repo: *mut git_repository,
+ reference: *const git_reference,
+ ) -> c_int;
+ pub fn git_annotated_commit_from_fetchhead(
+ out: *mut *mut git_annotated_commit,
+ repo: *mut git_repository,
+ branch_name: *const c_char,
+ remote_url: *const c_char,
+ oid: *const git_oid,
+ ) -> c_int;
+ pub fn git_annotated_commit_free(commit: *mut git_annotated_commit);
+ pub fn git_merge_init_options(opts: *mut git_merge_options, version: c_uint) -> c_int;
+ pub fn git_merge(
+ repo: *mut git_repository,
+ their_heads: *mut *const git_annotated_commit,
+ len: size_t,
+ merge_opts: *const git_merge_options,
+ checkout_opts: *const git_checkout_options,
+ ) -> c_int;
+ pub fn git_merge_commits(
+ out: *mut *mut git_index,
+ repo: *mut git_repository,
+ our_commit: *const git_commit,
+ their_commit: *const git_commit,
+ opts: *const git_merge_options,
+ ) -> c_int;
+ pub fn git_merge_trees(
+ out: *mut *mut git_index,
+ repo: *mut git_repository,
+ ancestor_tree: *const git_tree,
+ our_tree: *const git_tree,
+ their_tree: *const git_tree,
+ opts: *const git_merge_options,
+ ) -> c_int;
+ pub fn git_repository_state_cleanup(repo: *mut git_repository) -> c_int;
+
+ // merge analysis
+
+ pub fn git_merge_analysis(
+ analysis_out: *mut git_merge_analysis_t,
+ pref_out: *mut git_merge_preference_t,
+ repo: *mut git_repository,
+ their_heads: *mut *const git_annotated_commit,
+ their_heads_len: usize,
+ ) -> c_int;
+
+ pub fn git_merge_analysis_for_ref(
+ analysis_out: *mut git_merge_analysis_t,
+ pref_out: *mut git_merge_preference_t,
+ repo: *mut git_repository,
+ git_reference: *mut git_reference,
+ their_heads: *mut *const git_annotated_commit,
+ their_heads_len: usize,
+ ) -> c_int;
+
+ // notes
+ pub fn git_note_author(note: *const git_note) -> *const git_signature;
+ pub fn git_note_committer(note: *const git_note) -> *const git_signature;
+ pub fn git_note_create(
+ out: *mut git_oid,
+ repo: *mut git_repository,
+ notes_ref: *const c_char,
+ author: *const git_signature,
+ committer: *const git_signature,
+ oid: *const git_oid,
+ note: *const c_char,
+ force: c_int,
+ ) -> c_int;
+ pub fn git_note_default_ref(out: *mut git_buf, repo: *mut git_repository) -> c_int;
+ pub fn git_note_free(note: *mut git_note);
+ pub fn git_note_id(note: *const git_note) -> *const git_oid;
+ pub fn git_note_iterator_free(it: *mut git_note_iterator);
+ pub fn git_note_iterator_new(
+ out: *mut *mut git_note_iterator,
+ repo: *mut git_repository,
+ notes_ref: *const c_char,
+ ) -> c_int;
+ pub fn git_note_message(note: *const git_note) -> *const c_char;
+ pub fn git_note_next(
+ note_id: *mut git_oid,
+ annotated_id: *mut git_oid,
+ it: *mut git_note_iterator,
+ ) -> c_int;
+ pub fn git_note_read(
+ out: *mut *mut git_note,
+ repo: *mut git_repository,
+ notes_ref: *const c_char,
+ oid: *const git_oid,
+ ) -> c_int;
+ pub fn git_note_remove(
+ repo: *mut git_repository,
+ notes_ref: *const c_char,
+ author: *const git_signature,
+ committer: *const git_signature,
+ oid: *const git_oid,
+ ) -> c_int;
+
+ // blame
+ pub fn git_blame_file(
+ out: *mut *mut git_blame,
+ repo: *mut git_repository,
+ path: *const c_char,
+ options: *mut git_blame_options,
+ ) -> c_int;
+ pub fn git_blame_free(blame: *mut git_blame);
+
+ pub fn git_blame_init_options(opts: *mut git_blame_options, version: c_uint) -> c_int;
+ pub fn git_blame_get_hunk_count(blame: *mut git_blame) -> u32;
+
+ pub fn git_blame_get_hunk_byline(blame: *mut git_blame, lineno: usize)
+ -> *const git_blame_hunk;
+ pub fn git_blame_get_hunk_byindex(blame: *mut git_blame, index: u32) -> *const git_blame_hunk;
+
+ // revwalk
+ pub fn git_revwalk_new(out: *mut *mut git_revwalk, repo: *mut git_repository) -> c_int;
+ pub fn git_revwalk_free(walk: *mut git_revwalk);
+
+ pub fn git_revwalk_reset(walk: *mut git_revwalk) -> c_int;
+
+ pub fn git_revwalk_sorting(walk: *mut git_revwalk, sort_mode: c_uint) -> c_int;
+
+ pub fn git_revwalk_push_head(walk: *mut git_revwalk) -> c_int;
+ pub fn git_revwalk_push(walk: *mut git_revwalk, oid: *const git_oid) -> c_int;
+ pub fn git_revwalk_push_ref(walk: *mut git_revwalk, refname: *const c_char) -> c_int;
+ pub fn git_revwalk_push_glob(walk: *mut git_revwalk, glob: *const c_char) -> c_int;
+ pub fn git_revwalk_push_range(walk: *mut git_revwalk, range: *const c_char) -> c_int;
+ pub fn git_revwalk_simplify_first_parent(walk: *mut git_revwalk) -> c_int;
+
+ pub fn git_revwalk_hide_head(walk: *mut git_revwalk) -> c_int;
+ pub fn git_revwalk_hide(walk: *mut git_revwalk, oid: *const git_oid) -> c_int;
+ pub fn git_revwalk_hide_ref(walk: *mut git_revwalk, refname: *const c_char) -> c_int;
+ pub fn git_revwalk_hide_glob(walk: *mut git_revwalk, refname: *const c_char) -> c_int;
+ pub fn git_revwalk_add_hide_cb(
+ walk: *mut git_revwalk,
+ hide_cb: git_revwalk_hide_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+
+ pub fn git_revwalk_next(out: *mut git_oid, walk: *mut git_revwalk) -> c_int;
+
+ // merge
+ pub fn git_merge_base(
+ out: *mut git_oid,
+ repo: *mut git_repository,
+ one: *const git_oid,
+ two: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_merge_base_many(
+ out: *mut git_oid,
+ repo: *mut git_repository,
+ length: size_t,
+ input_array: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_merge_bases(
+ out: *mut git_oidarray,
+ repo: *mut git_repository,
+ one: *const git_oid,
+ two: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_merge_bases_many(
+ out: *mut git_oidarray,
+ repo: *mut git_repository,
+ length: size_t,
+ input_array: *const git_oid,
+ ) -> c_int;
+
+ // pathspec
+ pub fn git_pathspec_free(ps: *mut git_pathspec);
+ pub fn git_pathspec_match_diff(
+ out: *mut *mut git_pathspec_match_list,
+ diff: *mut git_diff,
+ flags: u32,
+ ps: *mut git_pathspec,
+ ) -> c_int;
+ pub fn git_pathspec_match_index(
+ out: *mut *mut git_pathspec_match_list,
+ index: *mut git_index,
+ flags: u32,
+ ps: *mut git_pathspec,
+ ) -> c_int;
+ pub fn git_pathspec_match_list_diff_entry(
+ m: *const git_pathspec_match_list,
+ pos: size_t,
+ ) -> *const git_diff_delta;
+ pub fn git_pathspec_match_list_entry(
+ m: *const git_pathspec_match_list,
+ pos: size_t,
+ ) -> *const c_char;
+ pub fn git_pathspec_match_list_entrycount(m: *const git_pathspec_match_list) -> size_t;
+ pub fn git_pathspec_match_list_failed_entry(
+ m: *const git_pathspec_match_list,
+ pos: size_t,
+ ) -> *const c_char;
+ pub fn git_pathspec_match_list_failed_entrycount(m: *const git_pathspec_match_list) -> size_t;
+ pub fn git_pathspec_match_list_free(m: *mut git_pathspec_match_list);
+ pub fn git_pathspec_match_tree(
+ out: *mut *mut git_pathspec_match_list,
+ tree: *mut git_tree,
+ flags: u32,
+ ps: *mut git_pathspec,
+ ) -> c_int;
+ pub fn git_pathspec_match_workdir(
+ out: *mut *mut git_pathspec_match_list,
+ repo: *mut git_repository,
+ flags: u32,
+ ps: *mut git_pathspec,
+ ) -> c_int;
+ pub fn git_pathspec_matches_path(
+ ps: *const git_pathspec,
+ flags: u32,
+ path: *const c_char,
+ ) -> c_int;
+ pub fn git_pathspec_new(out: *mut *mut git_pathspec, pathspec: *const git_strarray) -> c_int;
+
+ // diff
+ pub fn git_diff_blob_to_buffer(
+ old_blob: *const git_blob,
+ old_as_path: *const c_char,
+ buffer: *const c_char,
+ buffer_len: size_t,
+ buffer_as_path: *const c_char,
+ options: *const git_diff_options,
+ file_cb: git_diff_file_cb,
+ binary_cb: git_diff_binary_cb,
+ hunk_cb: git_diff_hunk_cb,
+ line_cb: git_diff_line_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_diff_blobs(
+ old_blob: *const git_blob,
+ old_as_path: *const c_char,
+ new_blob: *const git_blob,
+ new_as_path: *const c_char,
+ options: *const git_diff_options,
+ file_cb: git_diff_file_cb,
+ binary_cb: git_diff_binary_cb,
+ hunk_cb: git_diff_hunk_cb,
+ line_cb: git_diff_line_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_diff_buffers(
+ old_buffer: *const c_void,
+ old_len: size_t,
+ old_as_path: *const c_char,
+ new_buffer: *const c_void,
+ new_len: size_t,
+ new_as_path: *const c_char,
+ options: *const git_diff_options,
+ file_cb: git_diff_file_cb,
+ binary_cb: git_diff_binary_cb,
+ hunk_cb: git_diff_hunk_cb,
+ line_cb: git_diff_line_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_diff_from_buffer(
+ diff: *mut *mut git_diff,
+ content: *const c_char,
+ content_len: size_t,
+ ) -> c_int;
+ pub fn git_diff_find_similar(
+ diff: *mut git_diff,
+ options: *const git_diff_find_options,
+ ) -> c_int;
+ pub fn git_diff_find_init_options(opts: *mut git_diff_find_options, version: c_uint) -> c_int;
+ pub fn git_diff_foreach(
+ diff: *mut git_diff,
+ file_cb: git_diff_file_cb,
+ binary_cb: git_diff_binary_cb,
+ hunk_cb: git_diff_hunk_cb,
+ line_cb: git_diff_line_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_diff_free(diff: *mut git_diff);
+ pub fn git_diff_get_delta(diff: *const git_diff, idx: size_t) -> *const git_diff_delta;
+ pub fn git_diff_get_stats(out: *mut *mut git_diff_stats, diff: *mut git_diff) -> c_int;
+ pub fn git_diff_index_to_index(
+ diff: *mut *mut git_diff,
+ repo: *mut git_repository,
+ old_index: *mut git_index,
+ new_index: *mut git_index,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_diff_index_to_workdir(
+ diff: *mut *mut git_diff,
+ repo: *mut git_repository,
+ index: *mut git_index,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_diff_init_options(opts: *mut git_diff_options, version: c_uint) -> c_int;
+ pub fn git_diff_is_sorted_icase(diff: *const git_diff) -> c_int;
+ pub fn git_diff_merge(onto: *mut git_diff, from: *const git_diff) -> c_int;
+ pub fn git_diff_num_deltas(diff: *const git_diff) -> size_t;
+ pub fn git_diff_num_deltas_of_type(diff: *const git_diff, delta: git_delta_t) -> size_t;
+ pub fn git_diff_print(
+ diff: *mut git_diff,
+ format: git_diff_format_t,
+ print_cb: git_diff_line_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_diff_stats_deletions(stats: *const git_diff_stats) -> size_t;
+ pub fn git_diff_stats_files_changed(stats: *const git_diff_stats) -> size_t;
+ pub fn git_diff_stats_free(stats: *mut git_diff_stats);
+ pub fn git_diff_stats_insertions(stats: *const git_diff_stats) -> size_t;
+ pub fn git_diff_stats_to_buf(
+ out: *mut git_buf,
+ stats: *const git_diff_stats,
+ format: git_diff_stats_format_t,
+ width: size_t,
+ ) -> c_int;
+ pub fn git_diff_status_char(status: git_delta_t) -> c_char;
+ pub fn git_diff_tree_to_index(
+ diff: *mut *mut git_diff,
+ repo: *mut git_repository,
+ old_tree: *mut git_tree,
+ index: *mut git_index,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_diff_tree_to_tree(
+ diff: *mut *mut git_diff,
+ repo: *mut git_repository,
+ old_tree: *mut git_tree,
+ new_tree: *mut git_tree,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_diff_tree_to_workdir(
+ diff: *mut *mut git_diff,
+ repo: *mut git_repository,
+ old_tree: *mut git_tree,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_diff_tree_to_workdir_with_index(
+ diff: *mut *mut git_diff,
+ repo: *mut git_repository,
+ old_tree: *mut git_tree,
+ opts: *const git_diff_options,
+ ) -> c_int;
+
+ pub fn git_graph_ahead_behind(
+ ahead: *mut size_t,
+ behind: *mut size_t,
+ repo: *mut git_repository,
+ local: *const git_oid,
+ upstream: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_graph_descendant_of(
+ repo: *mut git_repository,
+ commit: *const git_oid,
+ ancestor: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_diff_format_email(
+ out: *mut git_buf,
+ diff: *mut git_diff,
+ opts: *const git_diff_format_email_options,
+ ) -> c_int;
+ pub fn git_diff_format_email_options_init(
+ opts: *mut git_diff_format_email_options,
+ version: c_uint,
+ ) -> c_int;
+
+ pub fn git_diff_patchid(
+ out: *mut git_oid,
+ diff: *mut git_diff,
+ opts: *mut git_diff_patchid_options,
+ ) -> c_int;
+ pub fn git_diff_patchid_options_init(
+ opts: *mut git_diff_patchid_options,
+ version: c_uint,
+ ) -> c_int;
+
+ // patch
+ pub fn git_patch_from_diff(out: *mut *mut git_patch, diff: *mut git_diff, idx: size_t)
+ -> c_int;
+ pub fn git_patch_from_blobs(
+ out: *mut *mut git_patch,
+ old_blob: *const git_blob,
+ old_as_path: *const c_char,
+ new_blob: *const git_blob,
+ new_as_path: *const c_char,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_patch_from_blob_and_buffer(
+ out: *mut *mut git_patch,
+ old_blob: *const git_blob,
+ old_as_path: *const c_char,
+ buffer: *const c_void,
+ buffer_len: size_t,
+ buffer_as_path: *const c_char,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_patch_from_buffers(
+ out: *mut *mut git_patch,
+ old_buffer: *const c_void,
+ old_len: size_t,
+ old_as_path: *const c_char,
+ new_buffer: *const c_void,
+ new_len: size_t,
+ new_as_path: *const c_char,
+ opts: *const git_diff_options,
+ ) -> c_int;
+ pub fn git_patch_free(patch: *mut git_patch);
+ pub fn git_patch_get_delta(patch: *const git_patch) -> *const git_diff_delta;
+ pub fn git_patch_num_hunks(patch: *const git_patch) -> size_t;
+ pub fn git_patch_line_stats(
+ total_context: *mut size_t,
+ total_additions: *mut size_t,
+ total_deletions: *mut size_t,
+ patch: *const git_patch,
+ ) -> c_int;
+ pub fn git_patch_get_hunk(
+ out: *mut *const git_diff_hunk,
+ lines_in_hunk: *mut size_t,
+ patch: *mut git_patch,
+ hunk_idx: size_t,
+ ) -> c_int;
+ pub fn git_patch_num_lines_in_hunk(patch: *const git_patch, hunk_idx: size_t) -> c_int;
+ pub fn git_patch_get_line_in_hunk(
+ out: *mut *const git_diff_line,
+ patch: *mut git_patch,
+ hunk_idx: size_t,
+ line_of_hunk: size_t,
+ ) -> c_int;
+ pub fn git_patch_size(
+ patch: *mut git_patch,
+ include_context: c_int,
+ include_hunk_headers: c_int,
+ include_file_headers: c_int,
+ ) -> size_t;
+ pub fn git_patch_print(
+ patch: *mut git_patch,
+ print_cb: git_diff_line_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_patch_to_buf(buf: *mut git_buf, patch: *mut git_patch) -> c_int;
+
+ // reflog
+ pub fn git_reflog_append(
+ reflog: *mut git_reflog,
+ id: *const git_oid,
+ committer: *const git_signature,
+ msg: *const c_char,
+ ) -> c_int;
+ pub fn git_reflog_delete(repo: *mut git_repository, name: *const c_char) -> c_int;
+ pub fn git_reflog_drop(
+ reflog: *mut git_reflog,
+ idx: size_t,
+ rewrite_previous_entry: c_int,
+ ) -> c_int;
+ pub fn git_reflog_entry_byindex(
+ reflog: *const git_reflog,
+ idx: size_t,
+ ) -> *const git_reflog_entry;
+ pub fn git_reflog_entry_committer(entry: *const git_reflog_entry) -> *const git_signature;
+ pub fn git_reflog_entry_id_new(entry: *const git_reflog_entry) -> *const git_oid;
+ pub fn git_reflog_entry_id_old(entry: *const git_reflog_entry) -> *const git_oid;
+ pub fn git_reflog_entry_message(entry: *const git_reflog_entry) -> *const c_char;
+ pub fn git_reflog_entrycount(reflog: *mut git_reflog) -> size_t;
+ pub fn git_reflog_free(reflog: *mut git_reflog);
+ pub fn git_reflog_read(
+ out: *mut *mut git_reflog,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_reflog_rename(
+ repo: *mut git_repository,
+ old_name: *const c_char,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_reflog_write(reflog: *mut git_reflog) -> c_int;
+
+ // transport
+ pub fn git_transport_register(
+ prefix: *const c_char,
+ cb: git_transport_cb,
+ param: *mut c_void,
+ ) -> c_int;
+ pub fn git_transport_unregister(prefix: *const c_char) -> c_int;
+ pub fn git_transport_smart(
+ out: *mut *mut git_transport,
+ owner: *mut git_remote,
+ payload: *mut c_void,
+ ) -> c_int;
+
+ // describe
+ pub fn git_describe_commit(
+ result: *mut *mut git_describe_result,
+ object: *mut git_object,
+ opts: *mut git_describe_options,
+ ) -> c_int;
+ pub fn git_describe_format(
+ buf: *mut git_buf,
+ result: *const git_describe_result,
+ opts: *const git_describe_format_options,
+ ) -> c_int;
+ pub fn git_describe_result_free(result: *mut git_describe_result);
+ pub fn git_describe_workdir(
+ out: *mut *mut git_describe_result,
+ repo: *mut git_repository,
+ opts: *mut git_describe_options,
+ ) -> c_int;
+
+ // message
+ pub fn git_message_prettify(
+ out: *mut git_buf,
+ message: *const c_char,
+ strip_comments: c_int,
+ comment_char: c_char,
+ ) -> c_int;
+
+ pub fn git_message_trailers(
+ out: *mut git_message_trailer_array,
+ message: *const c_char,
+ ) -> c_int;
+
+ pub fn git_message_trailer_array_free(trailer: *mut git_message_trailer_array);
+
+ // packbuilder
+ pub fn git_packbuilder_new(out: *mut *mut git_packbuilder, repo: *mut git_repository) -> c_int;
+ pub fn git_packbuilder_set_threads(pb: *mut git_packbuilder, n: c_uint) -> c_uint;
+ pub fn git_packbuilder_insert(
+ pb: *mut git_packbuilder,
+ id: *const git_oid,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_packbuilder_insert_tree(pb: *mut git_packbuilder, id: *const git_oid) -> c_int;
+ pub fn git_packbuilder_insert_commit(pb: *mut git_packbuilder, id: *const git_oid) -> c_int;
+ pub fn git_packbuilder_insert_walk(pb: *mut git_packbuilder, walk: *mut git_revwalk) -> c_int;
+ pub fn git_packbuilder_insert_recur(
+ pb: *mut git_packbuilder,
+ id: *const git_oid,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_packbuilder_write_buf(buf: *mut git_buf, pb: *mut git_packbuilder) -> c_int;
+ pub fn git_packbuilder_write(
+ pb: *mut git_packbuilder,
+ path: *const c_char,
+ mode: c_uint,
+ progress_cb: git_indexer_progress_cb,
+ progress_cb_payload: *mut c_void,
+ ) -> c_int;
+ #[deprecated = "use `git_packbuilder_name` to retrieve the filename"]
+ pub fn git_packbuilder_hash(pb: *mut git_packbuilder) -> *const git_oid;
+ pub fn git_packbuilder_name(pb: *mut git_packbuilder) -> *const c_char;
+ pub fn git_packbuilder_foreach(
+ pb: *mut git_packbuilder,
+ cb: git_packbuilder_foreach_cb,
+ payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_packbuilder_object_count(pb: *mut git_packbuilder) -> size_t;
+ pub fn git_packbuilder_written(pb: *mut git_packbuilder) -> size_t;
+ pub fn git_packbuilder_set_callbacks(
+ pb: *mut git_packbuilder,
+ progress_cb: git_packbuilder_progress,
+ progress_cb_payload: *mut c_void,
+ ) -> c_int;
+ pub fn git_packbuilder_free(pb: *mut git_packbuilder);
+
+ // indexer
+ pub fn git_indexer_new(
+ out: *mut *mut git_indexer,
+ path: *const c_char,
+ mode: c_uint,
+ odb: *mut git_odb,
+ opts: *mut git_indexer_options,
+ ) -> c_int;
+ pub fn git_indexer_append(
+ idx: *mut git_indexer,
+ data: *const c_void,
+ size: size_t,
+ stats: *mut git_indexer_progress,
+ ) -> c_int;
+ pub fn git_indexer_commit(idx: *mut git_indexer, stats: *mut git_indexer_progress) -> c_int;
+ #[deprecated = "use `git_indexer_name` to retrieve the filename"]
+ pub fn git_indexer_hash(idx: *const git_indexer) -> *const git_oid;
+ pub fn git_indexer_name(idx: *const git_indexer) -> *const c_char;
+ pub fn git_indexer_free(idx: *mut git_indexer);
+
+ pub fn git_indexer_options_init(opts: *mut git_indexer_options, version: c_uint) -> c_int;
+
+ // odb
+ pub fn git_repository_odb(out: *mut *mut git_odb, repo: *mut git_repository) -> c_int;
+ pub fn git_odb_new(db: *mut *mut git_odb) -> c_int;
+ pub fn git_odb_free(db: *mut git_odb);
+ pub fn git_odb_open_rstream(
+ out: *mut *mut git_odb_stream,
+ len: *mut size_t,
+ otype: *mut git_object_t,
+ db: *mut git_odb,
+ oid: *const git_oid,
+ ) -> c_int;
+ pub fn git_odb_stream_read(
+ stream: *mut git_odb_stream,
+ buffer: *mut c_char,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_odb_open_wstream(
+ out: *mut *mut git_odb_stream,
+ db: *mut git_odb,
+ size: git_object_size_t,
+ obj_type: git_object_t,
+ ) -> c_int;
+ pub fn git_odb_stream_write(
+ stream: *mut git_odb_stream,
+ buffer: *const c_char,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_odb_stream_finalize_write(id: *mut git_oid, stream: *mut git_odb_stream) -> c_int;
+ pub fn git_odb_stream_free(stream: *mut git_odb_stream);
+ pub fn git_odb_foreach(db: *mut git_odb, cb: git_odb_foreach_cb, payload: *mut c_void)
+ -> c_int;
+
+ pub fn git_odb_read(
+ out: *mut *mut git_odb_object,
+ odb: *mut git_odb,
+ oid: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_odb_read_header(
+ len_out: *mut size_t,
+ type_out: *mut git_object_t,
+ odb: *mut git_odb,
+ oid: *const git_oid,
+ ) -> c_int;
+
+ pub fn git_odb_write(
+ out: *mut git_oid,
+ odb: *mut git_odb,
+ data: *const c_void,
+ len: size_t,
+ otype: git_object_t,
+ ) -> c_int;
+
+ pub fn git_odb_write_pack(
+ out: *mut *mut git_odb_writepack,
+ odb: *mut git_odb,
+ progress_cb: git_indexer_progress_cb,
+ progress_payload: *mut c_void,
+ ) -> c_int;
+
+ pub fn git_odb_hash(
+ out: *mut git_oid,
+ data: *const c_void,
+ len: size_t,
+ otype: git_object_t,
+ ) -> c_int;
+
+ pub fn git_odb_hashfile(out: *mut git_oid, path: *const c_char, otype: git_object_t) -> c_int;
+
+ pub fn git_odb_exists_prefix(
+ out: *mut git_oid,
+ odb: *mut git_odb,
+ short_oid: *const git_oid,
+ len: size_t,
+ ) -> c_int;
+
+ pub fn git_odb_exists(odb: *mut git_odb, oid: *const git_oid) -> c_int;
+ pub fn git_odb_exists_ext(odb: *mut git_odb, oid: *const git_oid, flags: c_uint) -> c_int;
+
+ pub fn git_odb_refresh(odb: *mut git_odb) -> c_int;
+
+ pub fn git_odb_object_id(obj: *mut git_odb_object) -> *const git_oid;
+ pub fn git_odb_object_size(obj: *mut git_odb_object) -> size_t;
+ pub fn git_odb_object_type(obj: *mut git_odb_object) -> git_object_t;
+ pub fn git_odb_object_data(obj: *mut git_odb_object) -> *const c_void;
+ pub fn git_odb_object_dup(out: *mut *mut git_odb_object, obj: *mut git_odb_object) -> c_int;
+ pub fn git_odb_object_free(obj: *mut git_odb_object);
+
+ pub fn git_odb_init_backend(odb: *mut git_odb_backend, version: c_uint) -> c_int;
+
+ pub fn git_odb_add_backend(
+ odb: *mut git_odb,
+ backend: *mut git_odb_backend,
+ priority: c_int,
+ ) -> c_int;
+
+ pub fn git_odb_backend_pack(
+ out: *mut *mut git_odb_backend,
+ objects_dir: *const c_char,
+ ) -> c_int;
+
+ pub fn git_odb_backend_one_pack(
+ out: *mut *mut git_odb_backend,
+ objects_dir: *const c_char,
+ ) -> c_int;
+
+ pub fn git_odb_add_disk_alternate(odb: *mut git_odb, path: *const c_char) -> c_int;
+
+ pub fn git_odb_backend_loose(
+ out: *mut *mut git_odb_backend,
+ objects_dir: *const c_char,
+ compression_level: c_int,
+ do_fsync: c_int,
+ dir_mode: c_uint,
+ file_mode: c_uint,
+ ) -> c_int;
+
+ pub fn git_odb_add_alternate(
+ odb: *mut git_odb,
+ backend: *mut git_odb_backend,
+ priority: c_int,
+ ) -> c_int;
+
+ pub fn git_odb_backend_malloc(backend: *mut git_odb_backend, len: size_t) -> *mut c_void;
+
+ pub fn git_odb_num_backends(odb: *mut git_odb) -> size_t;
+ pub fn git_odb_get_backend(
+ backend: *mut *mut git_odb_backend,
+ odb: *mut git_odb,
+ position: size_t,
+ ) -> c_int;
+
+ // mempack
+ pub fn git_mempack_new(out: *mut *mut git_odb_backend) -> c_int;
+ pub fn git_mempack_reset(backend: *mut git_odb_backend) -> c_int;
+ pub fn git_mempack_dump(
+ pack: *mut git_buf,
+ repo: *mut git_repository,
+ backend: *mut git_odb_backend,
+ ) -> c_int;
+
+ // refdb
+ pub fn git_refdb_new(out: *mut *mut git_refdb, repo: *mut git_repository) -> c_int;
+ pub fn git_refdb_open(out: *mut *mut git_refdb, repo: *mut git_repository) -> c_int;
+ pub fn git_refdb_backend_fs(
+ out: *mut *mut git_refdb_backend,
+ repo: *mut git_repository,
+ ) -> c_int;
+ pub fn git_refdb_init_backend(backend: *mut git_refdb_backend, version: c_uint) -> c_int;
+ pub fn git_refdb_set_backend(refdb: *mut git_refdb, backend: *mut git_refdb_backend) -> c_int;
+ pub fn git_refdb_compress(refdb: *mut git_refdb) -> c_int;
+ pub fn git_refdb_free(refdb: *mut git_refdb);
+
+ // rebase
+ pub fn git_rebase_init_options(opts: *mut git_rebase_options, version: c_uint) -> c_int;
+ pub fn git_rebase_init(
+ out: *mut *mut git_rebase,
+ repo: *mut git_repository,
+ branch: *const git_annotated_commit,
+ upstream: *const git_annotated_commit,
+ onto: *const git_annotated_commit,
+ opts: *const git_rebase_options,
+ ) -> c_int;
+ pub fn git_rebase_open(
+ out: *mut *mut git_rebase,
+ repo: *mut git_repository,
+ opts: *const git_rebase_options,
+ ) -> c_int;
+ pub fn git_rebase_operation_entrycount(rebase: *mut git_rebase) -> size_t;
+ pub fn git_rebase_operation_current(rebase: *mut git_rebase) -> size_t;
+ pub fn git_rebase_operation_byindex(
+ rebase: *mut git_rebase,
+ idx: size_t,
+ ) -> *mut git_rebase_operation;
+ pub fn git_rebase_orig_head_id(rebase: *mut git_rebase) -> *const git_oid;
+ pub fn git_rebase_orig_head_name(rebase: *mut git_rebase) -> *const c_char;
+ pub fn git_rebase_next(
+ operation: *mut *mut git_rebase_operation,
+ rebase: *mut git_rebase,
+ ) -> c_int;
+ pub fn git_rebase_inmemory_index(index: *mut *mut git_index, rebase: *mut git_rebase) -> c_int;
+ pub fn git_rebase_commit(
+ id: *mut git_oid,
+ rebase: *mut git_rebase,
+ author: *const git_signature,
+ committer: *const git_signature,
+ message_encoding: *const c_char,
+ message: *const c_char,
+ ) -> c_int;
+ pub fn git_rebase_abort(rebase: *mut git_rebase) -> c_int;
+ pub fn git_rebase_finish(rebase: *mut git_rebase, signature: *const git_signature) -> c_int;
+ pub fn git_rebase_free(rebase: *mut git_rebase);
+
+ // cherrypick
+ pub fn git_cherrypick_init_options(opts: *mut git_cherrypick_options, version: c_uint)
+ -> c_int;
+ pub fn git_cherrypick(
+ repo: *mut git_repository,
+ commit: *mut git_commit,
+ options: *const git_cherrypick_options,
+ ) -> c_int;
+ pub fn git_cherrypick_commit(
+ out: *mut *mut git_index,
+ repo: *mut git_repository,
+ cherrypick_commit: *mut git_commit,
+ our_commit: *mut git_commit,
+ mainline: c_uint,
+ merge_options: *const git_merge_options,
+ ) -> c_int;
+
+ // apply
+ pub fn git_apply_options_init(opts: *mut git_apply_options, version: c_uint) -> c_int;
+ pub fn git_apply_to_tree(
+ out: *mut *mut git_index,
+ repo: *mut git_repository,
+ preimage: *mut git_tree,
+ diff: *mut git_diff,
+ options: *const git_apply_options,
+ ) -> c_int;
+ pub fn git_apply(
+ repo: *mut git_repository,
+ diff: *mut git_diff,
+ location: git_apply_location_t,
+ options: *const git_apply_options,
+ ) -> c_int;
+
+ // revert
+ pub fn git_revert_options_init(opts: *mut git_revert_options, version: c_uint) -> c_int;
+ pub fn git_revert_commit(
+ out: *mut *mut git_index,
+ repo: *mut git_repository,
+ revert_commit: *mut git_commit,
+ our_commit: *mut git_commit,
+ mainline: c_uint,
+ merge_options: *const git_merge_options,
+ ) -> c_int;
+ pub fn git_revert(
+ repo: *mut git_repository,
+ commit: *mut git_commit,
+ given_opts: *const git_revert_options,
+ ) -> c_int;
+
+ // Common
+ pub fn git_libgit2_version(major: *mut c_int, minor: *mut c_int, rev: *mut c_int) -> c_int;
+ pub fn git_libgit2_features() -> c_int;
+ pub fn git_libgit2_opts(option: c_int, ...) -> c_int;
+
+ // Worktrees
+ pub fn git_worktree_list(out: *mut git_strarray, repo: *mut git_repository) -> c_int;
+ pub fn git_worktree_lookup(
+ out: *mut *mut git_worktree,
+ repo: *mut git_repository,
+ name: *const c_char,
+ ) -> c_int;
+ pub fn git_worktree_open_from_repository(
+ out: *mut *mut git_worktree,
+ repo: *mut git_repository,
+ ) -> c_int;
+ pub fn git_worktree_free(wt: *mut git_worktree);
+ pub fn git_worktree_validate(wt: *const git_worktree) -> c_int;
+ pub fn git_worktree_add_options_init(
+ opts: *mut git_worktree_add_options,
+ version: c_uint,
+ ) -> c_int;
+ pub fn git_worktree_add(
+ out: *mut *mut git_worktree,
+ repo: *mut git_repository,
+ name: *const c_char,
+ path: *const c_char,
+ opts: *const git_worktree_add_options,
+ ) -> c_int;
+ pub fn git_worktree_lock(wt: *mut git_worktree, reason: *const c_char) -> c_int;
+ pub fn git_worktree_unlock(wt: *mut git_worktree) -> c_int;
+ pub fn git_worktree_is_locked(reason: *mut git_buf, wt: *const git_worktree) -> c_int;
+ pub fn git_worktree_name(wt: *const git_worktree) -> *const c_char;
+ pub fn git_worktree_path(wt: *const git_worktree) -> *const c_char;
+ pub fn git_worktree_prune_options_init(
+ opts: *mut git_worktree_prune_options,
+ version: c_uint,
+ ) -> c_int;
+ pub fn git_worktree_is_prunable(
+ wt: *mut git_worktree,
+ opts: *mut git_worktree_prune_options,
+ ) -> c_int;
+ pub fn git_worktree_prune(
+ wt: *mut git_worktree,
+ opts: *mut git_worktree_prune_options,
+ ) -> c_int;
+
+ // Ref transactions
+ pub fn git_transaction_new(out: *mut *mut git_transaction, repo: *mut git_repository) -> c_int;
+ pub fn git_transaction_lock_ref(tx: *mut git_transaction, refname: *const c_char) -> c_int;
+ pub fn git_transaction_set_target(
+ tx: *mut git_transaction,
+ refname: *const c_char,
+ target: *const git_oid,
+ sig: *const git_signature,
+ msg: *const c_char,
+ ) -> c_int;
+ pub fn git_transaction_set_symbolic_target(
+ tx: *mut git_transaction,
+ refname: *const c_char,
+ target: *const c_char,
+ sig: *const git_signature,
+ msg: *const c_char,
+ ) -> c_int;
+ pub fn git_transaction_set_reflog(
+ tx: *mut git_transaction,
+ refname: *const c_char,
+ reflog: *const git_reflog,
+ ) -> c_int;
+ pub fn git_transaction_remove(tx: *mut git_transaction, refname: *const c_char) -> c_int;
+ pub fn git_transaction_commit(tx: *mut git_transaction) -> c_int;
+ pub fn git_transaction_free(tx: *mut git_transaction);
+
+ // Mailmap
+ pub fn git_mailmap_new(out: *mut *mut git_mailmap) -> c_int;
+ pub fn git_mailmap_from_buffer(
+ out: *mut *mut git_mailmap,
+ buf: *const c_char,
+ len: size_t,
+ ) -> c_int;
+ pub fn git_mailmap_from_repository(
+ out: *mut *mut git_mailmap,
+ repo: *mut git_repository,
+ ) -> c_int;
+ pub fn git_mailmap_free(mm: *mut git_mailmap);
+ pub fn git_mailmap_resolve_signature(
+ out: *mut *mut git_signature,
+ mm: *const git_mailmap,
+ sig: *const git_signature,
+ ) -> c_int;
+ pub fn git_mailmap_add_entry(
+ mm: *mut git_mailmap,
+ real_name: *const c_char,
+ real_email: *const c_char,
+ replace_name: *const c_char,
+ replace_email: *const c_char,
+ ) -> c_int;
+
+ // email
+ pub fn git_email_create_from_diff(
+ out: *mut git_buf,
+ diff: *mut git_diff,
+ patch_idx: usize,
+ patch_count: usize,
+ commit_id: *const git_oid,
+ summary: *const c_char,
+ body: *const c_char,
+ author: *const git_signature,
+ given_opts: *const git_email_create_options,
+ ) -> c_int;
+
+ pub fn git_email_create_from_commit(
+ out: *mut git_buf,
+ commit: *mut git_commit,
+ given_opts: *const git_email_create_options,
+ ) -> c_int;
+
+ pub fn git_trace_set(level: git_trace_level_t, cb: git_trace_cb) -> c_int;
+}
+
+pub fn init() {
+ use std::sync::Once;
+
+ static INIT: Once = Once::new();
+ INIT.call_once(|| unsafe {
+ openssl_init();
+ ssh_init();
+ let rc = git_libgit2_init();
+ if rc >= 0 {
+ // Note that we intentionally never schedule `git_libgit2_shutdown`
+ // to get called. There's not really a great time to call that and
+ // #276 has some more info about how automatically doing it can
+ // cause problems.
+ return;
+ }
+
+ let git_error = git_error_last();
+ let error = if !git_error.is_null() {
+ CStr::from_ptr((*git_error).message).to_string_lossy()
+ } else {
+ "unknown error".into()
+ };
+ panic!(
+ "couldn't initialize the libgit2 library: {}, error: {}",
+ rc, error
+ );
+ });
+}
+
+#[cfg(all(unix, feature = "https"))]
+#[doc(hidden)]
+pub fn openssl_init() {
+ openssl_sys::init();
+}
+
+#[cfg(any(windows, not(feature = "https")))]
+#[doc(hidden)]
+pub fn openssl_init() {}
+
+#[cfg(feature = "ssh")]
+fn ssh_init() {
+ libssh2::init();
+}
+
+#[cfg(not(feature = "ssh"))]
+fn ssh_init() {}
+
+#[doc(hidden)]
+pub fn vendored() -> bool {
+ cfg!(libgit2_vendored)
+}