]> git.proxmox.com Git - libgit2.git/commitdiff
Update upstream source from tag 'upstream/0.27.4+dfsg.1'
authorXimin Luo <infinity0@debian.org>
Sat, 11 Aug 2018 02:43:48 +0000 (19:43 -0700)
committerXimin Luo <infinity0@debian.org>
Sat, 11 Aug 2018 02:43:48 +0000 (19:43 -0700)
Update to upstream version '0.27.4+dfsg.1'
with Debian dir 7953f10c5dc75f6cd97e6619d5e91d82a2bbd52f

27 files changed:
debian/README.source [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/clean [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dfsg_clean.sh [new file with mode: 0755]
debian/docs [new file with mode: 0644]
debian/gbp.conf [new file with mode: 0644]
debian/libgit2-27.install [new file with mode: 0644]
debian/libgit2-27.symbols [new file with mode: 0644]
debian/libgit2-dev.examples [new file with mode: 0644]
debian/libgit2-dev.install [new file with mode: 0644]
debian/patches/disable-online-tests.patch [new file with mode: 0644]
debian/patches/fix-stack-smashing-error.patch [new file with mode: 0644]
debian/patches/index-Fix-alignment-issues-in-write_disk_entry.patch [new file with mode: 0644]
debian/patches/remove-mbedtls-from-pkgconfig.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/patches/u-segfault-fix.patch [new file with mode: 0644]
debian/patches/use-mbedtls.patch [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/source/format [new file with mode: 0644]
debian/source/lintian-overrides [new file with mode: 0644]
debian/tests/CMakeLists.txt [new file with mode: 0644]
debian/tests/control [new file with mode: 0644]
debian/tests/libgit2_test.c [new file with mode: 0644]
debian/watch [new file with mode: 0644]

diff --git a/debian/README.source b/debian/README.source
new file mode 100644 (file)
index 0000000..80dcb6d
--- /dev/null
@@ -0,0 +1,4 @@
+The DFSG version string is added because the /deps directory is removed from the
+upstream tarball since it's not used in any part of the packaging.
+
+ -- Russell Sim <russell.sim@gmail.com>, Sat, 29 Jul 2017 18:32:25 +0200
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..b1a6091
--- /dev/null
@@ -0,0 +1,346 @@
+libgit2 (0.27.0+dfsg.1-0.9) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix random segfaults in threads::diff. (Closes: #904004)
+  * Don't specifically use gcc-8 now that it's already the Debian default.
+
+ -- Ximin Luo <infinity0@debian.org>  Sun, 05 Aug 2018 06:14:33 -0700
+
+libgit2 (0.27.0+dfsg.1-0.8) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * Force build with gcc-8 to fix segfaults in armhf build (Closes: #904004)
+
+ -- Pirate Praveen <praveen@debian.org>  Wed, 18 Jul 2018 16:03:06 +0530
+
+libgit2 (0.27.0+dfsg.1-0.7) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * Enable basic autopkgtest
+
+ -- Pirate Praveen <praveen@debian.org>  Fri, 13 Jul 2018 08:19:44 +0530
+
+libgit2 (0.27.0+dfsg.1-0.6) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * Reupload to unstable
+
+ -- Pirate Praveen <praveen@debian.org>  Wed, 11 Jul 2018 18:45:42 +0530
+
+libgit2 (0.27.0+dfsg.1-0.5) experimental; urgency=medium
+
+  * Non-maintainer upload
+  * Switch vcs to salsa
+  * Bump standards version to 4.1.4
+  * Bump debhelper compatibility level to 11
+
+ -- Pirate Praveen <praveen@debian.org>  Mon, 04 Jun 2018 18:41:38 +0530
+
+libgit2 (0.27.0+dfsg.1-0.4) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix stack smashing error on 32-bit targets (Closes: #900126)
+
+ -- John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>  Sat, 26 May 2018 16:27:33 +0200
+
+libgit2 (0.27.0+dfsg.1-0.3) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * Don't add mbedtls in pkgconfig file (upstream patch)
+  * Fix test failure due to alignment-related crashes (Closes: #900059)
+
+ -- Pirate Praveen <praveen@debian.org>  Sat, 26 May 2018 17:31:32 +0530
+
+libgit2 (0.27.0+dfsg.1-0.2) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * Disable tests requiring internet access
+  * Explicitly specify mbedTLS for https (Closes: #899253)
+
+ -- Pirate Praveen <praveen@debian.org>  Thu, 24 May 2018 21:53:14 +0530
+
+libgit2 (0.27.0+dfsg.1-0.1) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * New upstream version 0.27.0 (Closes: #869665)
+  * Switch to mbedTLS with upstream patch
+    (Thanks to Nicolas Braud-Santoni for his efforts to update curl support
+    patch)
+  * Library transition libgit2-26 to libgit2-27
+
+ -- Pirate Praveen <praveen@debian.org>  Sun, 06 May 2018 17:57:24 +0530
+
+libgit2 (0.26.0+dfsg.1-1.2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+
+  * Declare compliance with standards version 4.1.3.
+    * debian/control: Replace `Priority: extra` with `optional`
+    * debian/copyright
+      + Refer to the CC0 license file.
+        Closes: #882632
+      + Use HTTPS URIs
+
+  * debian/watch: Fix generated version numbers
+
+  * Make the package lintian-clean
+    * debian/control
+      + Use canonical Vcs-* URLs
+      + Use an HTTPS URL for the homepage
+    * Switch to debhelper 11
+    * Lintian overrides
+      * Remove empty override files
+      * Relocate source file to debian/source/
+      * Rename tag debian-watch-may-check-gpg-signature
+
+ -- Nicolas Braud-Santoni <nicolas@braud-santoni.eu>  Wed, 14 Feb 2018 16:34:02 +0100
+
+libgit2 (0.26.0+dfsg.1-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Upload to unstable.
+  * Use git_curl_stream_new for HTTPS because we don't link against openssl.
+
+ -- Ximin Luo <infinity0@debian.org>  Thu, 14 Sep 2017 11:52:10 +0200
+
+libgit2 (0.26.0+dfsg.1-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Enable GSS authentication support.
+  * Remove unused deps (Closes: #861752)
+
+ -- Russell Sim <russell.sim@gmail.com>  Sat, 29 Jul 2017 15:58:46 +0200
+
+libgit2 (0.25.1+really0.24.6-1) unstable; urgency=medium
+
+  * Revert 0.25.1 in unstable, 0.24.5 was already in unstable 0.25.1 was
+    uploaded after the freeze.
+  * Release 0.24.6 (CVE-2016-10128, CVE-2016-10129, CVE-2016-10130)
+    (Closes: #851406)
+
+ -- Russell Sim <russell.sim@gmail.com>  Sun, 21 May 2017 18:18:47 +0200
+
+libgit2 (0.25.1-2) unstable; urgency=medium
+
+  * Upload to unstable
+
+ -- Russell Sim <russell.sim@gmail.com>  Sat, 20 May 2017 19:27:39 +0200
+
+libgit2 (0.25.1-1) experimental; urgency=medium
+
+  * New upstream release. (CVE-2016-10128, CVE-2016-10129, CVE-2016-10130)
+    (Closes: #851406, #857068)
+
+ -- Russell Sim <russell.sim@gmail.com>  Tue, 25 Apr 2017 07:29:37 +0200
+
+libgit2 (0.24.5-1) unstable; urgency=medium
+
+  * New upstream release.
+  * debian/patch/fix_gmt14_timzone_bug.patch (Closes: #841532)
+  * Correcty address CVE-2016-8568
+
+ -- Russell Sim <russell.sim@gmail.com>  Mon, 02 Jan 2017 20:35:08 +1100
+
+libgit2 (0.24.2-2) unstable; urgency=medium
+
+  * Upload to unstable.
+
+ -- Russell Sim <russell.sim@gmail.com>  Fri, 04 Nov 2016 18:36:41 +1100
+
+libgit2 (0.24.2-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Bump Standards-Version to 3.9.8
+  * Add commit-always-initialize-commit-message.patch fixes CVE-2016-8568,
+    CVE-2016-8569
+  * debian/rules: Set debian hardening compile flags.
+  * debian/rules: When testing package force timezone to GMT.
+
+ -- Russell Sim <russell.sim@gmail.com>  Sun, 23 Oct 2016 14:30:45 +1100
+
+libgit2 (0.24.1-2) unstable; urgency=medium
+
+  * Team upload.
+  * Upload to unstable.
+
+ -- Andreas Henriksson <andreas@fatal.se>  Wed, 13 Apr 2016 11:31:25 +0200
+
+libgit2 (0.24.1-1) experimental; urgency=medium
+
+  * Team upload.
+  * New upstream release.
+  * Drop git_tests-fix-core-stream-test-when-built-with-openssl-o.patch
+    - merged upstream.
+  * Revert "Disable fakeroot emulation when running tests"
+    - no longer needed thanks to upstream fix.
+
+ -- Andreas Henriksson <andreas@fatal.se>  Tue, 12 Apr 2016 16:34:48 +0200
+
+libgit2 (0.24.0-2) experimental; urgency=medium
+
+  * Team upload.
+  * Incorporate 0.23.1-1.1 NMU diff
+  * Drop libgit2-dbg and migrate to dbgsym
+  * Add git_tests-fix-core-stream-test-when-built-with-openssl-o.patch
+    - cherry-picked from upstream git master.
+  * Disable fakeroot emulation when running tests
+    - tests only works under regular user or real root.
+
+ -- Andreas Henriksson <andreas@fatal.se>  Mon, 11 Apr 2016 17:03:05 +0200
+
+libgit2 (0.24.0-1) experimental; urgency=medium
+
+  * Team upload.
+  * New upstream release. (Closes: #798338)
+  * Rename packages for new upstream so version -24
+  * Update debian/libgit2-24.symbols
+  * Bump Standards-Version to 3.9.7
+  * Update Vcs-* for new collab-maint repo
+
+ -- Andreas Henriksson <andreas@fatal.se>  Mon, 04 Apr 2016 15:30:44 +0200
+
+libgit2 (0.23.1-1.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Don't depend on OpenSSL, either directly or indirectly. Build with and
+    depend on libcurl4-gnutls-dev instead. (Closes: #798421)
+  * Drop associated Build-Depends on ca-certificates.
+
+ -- Josh Triplett <josh@joshtriplett.org>  Fri, 18 Mar 2016 17:08:00 -0700
+
+libgit2 (0.23.1-1) unstable; urgency=medium
+
+  * New upstream release 0.23.1.
+  * debian/control: Added build dependency on libcurl4-openssl-dev.
+  * debian/control: Updated VCS URL.
+  * debian/copyright: Added winhttp copyright.
+  * debian/docs: Added missing development documentation.
+  * debian/libgit2-23.symbols: Updated with latest symbols.
+  * debian/libgit2-dev.lintian-overrides: Override comment
+    stripping, should work once it's supported by dh_strip.
+  * debian/patches/disable_tests.patch: Updated for 0.23.0.
+
+ -- Russell Sim <russell.sim@gmail.com>  Tue, 11 Aug 2015 08:51:39 +1000
+
+libgit2 (0.22.2-2) unstable; urgency=medium
+
+  * debian/control: Added dependency on pkg-config (Closes: #786494)
+  * debian/rules: Manually cleanup clar files (Closes: #786491)
+
+ -- Russell Sim <russell.sim@gmail.com>  Sat, 23 May 2015 22:42:04 -0700
+
+libgit2 (0.22.2-1) unstable; urgency=medium
+
+  * New upstream releaase 0.22.2 (Closes: #780495).
+
+ -- Russell Sim <russell.sim@gmail.com>  Wed, 06 May 2015 21:54:25 +1000
+
+libgit2 (0.21.3-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Use CURDIR instead of PWD to fix the previous upload (Closes: #761539).
+
+ -- Ivo De Decker <ivodd@debian.org>  Thu, 08 Jan 2015 23:04:40 +0100
+
+libgit2 (0.21.3-1) unstable; urgency=medium
+
+  * New upstream release 0.21.3 (CVE-2014-9390) (Closes: #774048).
+  * debian/rules: Run tests in a local tmpdir to fix FTBFS (Closes: #761539).
+
+ -- Russell Sim <russell.sim@gmail.com>  Sun, 28 Dec 2014 18:52:18 +1100
+
+libgit2 (0.21.2-2) unstable; urgency=medium
+
+  * debian/control: Added missing dependencies. (Closes: #768482)
+
+ -- Russell Sim <russell.sim@gmail.com>  Sun, 16 Nov 2014 10:33:23 +0100
+
+libgit2 (0.21.2-1) unstable; urgency=medium
+
+  * New upstream release 0.21.2.
+  * debian/control: Added libssh2-1-dev requirement. (Closes: #761042)
+  * debian/control: Added libhttp-parser-dev requirement.
+  * debian/copyright: Fixed MIT NGINX license format.
+  * debian/copyright: Reordered file sections.
+  * debian/copyright: Fixed incorrect clar licensing.
+  * Bumped standards version to 3.9.6 (no change necessary).
+
+ -- Russell Sim <russell.sim@gmail.com>  Tue, 28 Oct 2014 20:34:58 +1100
+
+libgit2 (0.21.1-1) unstable; urgency=medium
+
+  * New upstream release 0.21.1.
+
+ -- Russell Sim <russell.sim@gmail.com>  Wed, 03 Sep 2014 12:41:44 +1000
+
+libgit2 (0.21.0-1) UNRELEASED; urgency=medium
+
+  * New upstream release 0.21.0.
+  * debian/copyright: Added new licenses: ICS, CC0.
+  * Library name now matches so name version.
+
+ -- Russell Sim <russell.sim@gmail.com>  Sat, 21 Jun 2014 11:19:23 +1000
+
+libgit2 (0.20.0-1) experimental; urgency=medium
+
+  * New upstream release 0.20.0.
+  * debian/patches/disable_online_tests.patch: Renamed to
+    disable_tests.patch.
+  * debian/patches/disable_tests.patch: Disabled blame test.
+  * debian/rules: Use automatic dh_makeshlib version dependency.
+  * Bumped standards version to 3.9.5 (no change necessary).
+  * debian/copyright: Added new licenses: MIT, BSD and PHP
+
+ -- Russell Sim <russell.sim@gmail.com>  Thu, 13 Mar 2014 20:35:39 +1100
+
+libgit2 (0.19.0-2) experimental; urgency=low
+
+  * Added correct dependencies to development package. (Closes: #715173)
+  * Standards upgrade to version 3.9.4.
+  * Multi-arch support.
+  * Manually specified symbols instead of relying on regex.
+
+ -- Russell Sim <russell.sim@gmail.com>  Wed, 20 Aug 2013 22:33:20 +1000
+
+libgit2 (0.19.0-1) experimental; urgency=low
+
+  * Enable threading. (Closes: #700181)
+
+ -- Russell Sim <russell.sim@gmail.com>  Tue, 02 Jul 2013 19:43:00 +1000
+
+libgit2 (0.18.0-2) experimental; urgency=low
+
+  * Disable online tests.
+    Thanks to Felix Geyer for the heads up. (Closes: #712300)
+
+ -- Russell Sim <russell.sim@gmail.com>  Mon, 17 Jun 2013 23:11:15 +1000
+
+libgit2 (0.18.0-1) experimental; urgency=low
+
+  [ Russell Sim ]
+  * Added examples to dev package.
+
+  [ Carlos Martín Nieto ]
+  * Build-Depend on python-minimal instead of -all
+  * BUILD_TESTS isn't used in this project
+
+  [ Russell Sim ]
+  * New upstream release 0.18.0.
+
+ -- Russell Sim <russell.sim@gmail.com>  Tue, 30 Apr 2013 00:55:09 +1000
+
+libgit2 (0.17.0-1) experimental; urgency=low
+
+  * New Upstream Release.
+  * debian/patches/build_static.patch: Enables building as both
+    static and dynamic library.
+  * debian/rules: Added CMAKE_BUILD_TYPE=RelWithDebInfo to rules file.
+  * debian/compat: Updated to 9, adds support for hardening.
+
+ -- Russell Sim <russell.sim@gmail.com>  Sun, 20 May 2012 21:34:12 +1000
+
+libgit2 (0.16.0-1) experimental; urgency=low
+
+  * Initial release (Closes: #614517)
+
+ -- Russell Sim <russell.sim@gmail.com>  Tue, 06 Mar 2012 23:03:20 +1100
diff --git a/debian/clean b/debian/clean
new file mode 100644 (file)
index 0000000..1df35a1
--- /dev/null
@@ -0,0 +1,2 @@
+tests/.clarcache
+tests/clar.suite
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..b4de394
--- /dev/null
@@ -0,0 +1 @@
+11
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..cc34389
--- /dev/null
@@ -0,0 +1,37 @@
+Source: libgit2
+Section: libs
+Priority: optional
+Maintainer: Russell Sim <russell.sim@gmail.com>
+Build-Depends: debhelper (>= 11~),
+               python-minimal (>= 2.4.0), pkg-config,
+               cmake, libz-dev, libmbedtls-dev,
+               libssh2-1-dev, libhttp-parser-dev, libkrb5-dev
+Standards-Version: 4.1.4
+Homepage: https://libgit2.github.com/
+Vcs-Git: https://salsa.debian.org/debian/libgit2.git
+Vcs-Browser: https://salsa.debian.org/debian/libgit2
+
+
+Package: libgit2-dev
+Architecture: any
+Section: libdevel
+Multi-Arch: same
+Depends: libgit2-27 (= ${binary:Version}), libz-dev,
+         libmbedtls-dev, libssh2-1-dev,
+         libhttp-parser-dev, ${shlibs:Depends}, ${misc:Depends}
+Description: low-level Git library (development files)
+ libgit2 is a portable, pure C implementation of the Git
+ distributed version control system core methods provided as a
+ re-entrant link-able library with a solid API.
+ .
+ This package contains the development files for libgit2.
+
+Package: libgit2-27
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: low-level Git library
+ libgit2 is a portable, pure C implementation of the Git
+ distributed version control system core methods provided as a
+ re-entrant link-able library with a solid API.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..779a9c1
--- /dev/null
@@ -0,0 +1,419 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: libgit2
+Source: https://libgit2.github.com/
+Files-Excluded: deps/*
+
+Files: *
+Copyright: 2009-2012, the libgit2 contributors
+License: GPL-2 with linking exception, origin admission
+
+Files: cmake/Modules/FindGSSAPI.cmake
+Copyright: 2013, Andreas Schneider <asn@cryptomilk.org>
+License: BSD-2-clause
+
+Files: debian/*
+Copyright: 2011-2015, Russell Sim <russell.sim@gmail.com>
+License: GPL-2+
+
+Files: examples/*
+Copyright: Public Domain
+License: CC0-1.0
+
+Files: include/git2/inttypes.h include/git2/stdint.h
+Copyright: 2006, Alexander Chemeris
+License: BSD-3-clause-modified
+
+Files: src/khash.h
+Copyright: 2008, 2009, 2011, Attractive Chaos <attractor@live.co.uk>
+License: MIT
+
+Files: src/tsort.c
+Copyright: 2010, Christopher Swenson
+           2011, Vicent Marti
+License: MIT
+
+Files: src/path.c src/fnmatch.h
+Copyright: 2008, The Android Open Source Project
+License: BSD-2-clause
+
+Files: src/util.c
+Copyright: 2009, Public Software Group e. V., Berlin, Germany
+           1990, Regents of the University of California.
+License: MIT and BSD-3-clause
+
+Files: src/xdiff/*
+Copyright: 2003, Davide Libenzi
+License: LGPL-2.1+
+
+Files: src/xdiff/xmerge.c
+Copyright: 2003-2006, Davide Libenzi
+           2003-2006, Johannes E. Schindelin
+License: LGPL-2.1+
+
+Files: src/xdiff/xpatience.c
+Copyright: 2003-2009, Davide Libenzi
+           2003-2009, Johannes E. Schindelin
+License: LGPL-2.1+
+
+Files: src/xdiff/xhistogram.c
+Copyright: 2010, Google Inc and others from JGit's IP log.
+License: EDL-1.0
+
+Files: src/win32/posix_w32.c
+Copyright: 1999 - 2012, The PHP Group
+License: PHP-3.01
+
+Files: src/fnmatch.c
+Copyright: 1989, 1993, 1994, The Regents of the University of California.
+License: BSD-3-clause
+
+Files: tests/clar/*
+Copyright: 2011, Vicent Marti
+License: MIT
+
+Files: tests/clar.h tests/clar.c tests/generate.py
+Copyright: Vicent Marti
+License: ISC
+
+Files: tests/refs/normalize.c
+Copyright: 2009, Google Inc.
+License: BSD-3-clause-jgit
+
+Files: src/date.c
+Copyright: 2005, Linus Torvalds
+License: GPL-2 with linking exception
+ .
+ Note that the only valid version of the GPL as far as this project
+ is concerned is _this_ particular version of the license (ie v2, not
+ v2.2 or v3.x or whatever), unless explicitly otherwise stated.
+ .
+            LINKING EXCEPTION
+ .
+ In addition to the permissions in the GNU General Public License,
+ the authors give you unlimited permission to link the compiled
+ version of this library into combinations with other programs,
+ and to distribute those combinations without any restriction
+ coming from the use of this file.  (The General Public License
+ restrictions do apply in other respects; for example, they cover
+ modification of the file, and distribution when not linked into
+ a combined executable.)
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+License: GPL-2 with linking exception, origin admission
+ libgit2 is Copyright (C) 2009-2011 the libgit2 contributors,
+ unless otherwise stated. See the AUTHORS file for details.
+ .
+ Note that the only valid version of the GPL as far as this project
+ is concerned is _this_ particular version of the license (ie v2, not
+ v2.2 or v3.x or whatever), unless explicitly otherwise stated.
+ .
+            LINKING EXCEPTION
+ .
+ In addition to the permissions in the GNU General Public License,
+ the authors give you unlimited permission to link the compiled
+ version of this library into combinations with other programs,
+ and to distribute those combinations without any restriction
+ coming from the use of this file.  (The General Public License
+ restrictions do apply in other respects; for example, they cover
+ modification of the file, and distribution when not linked into
+ a combined executable.)
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+ .
+ ----------------------------------------------------------------------
+ .
+ The priority queue implementation is based on code licensed under the
+ Apache 2.0 license:
+ .
+    Copyright 2010 Volkan Yazıcı <volkan.yazici@gmail.com>
+    Copyright 2006-2010 The Apache Software Foundation
+ .
+ The full text of the Apache 2.0 license is available at:
+ .
+    http://www.apache.org/licenses/LICENSE-2.0
+
+
+License: BSD-2-clause
+ All rights reserved.
+ .
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+
+License: BSD-3-clause
+ All rights reserved.
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. [rescinded 22 July 1999]
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+License: BSD-3-clause-modified
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ .
+   1. Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+ .
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+ .
+   3. The name of the author may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: BSD-3-clause-jgit
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ .
+ - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ .
+ - Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions and the following
+   disclaimer in the documentation and/or other materials provided
+   with the distribution.
+ .
+ - Neither the name of the Git Development Community nor the
+   names of its contributors may be used to endorse or promote
+   products derived from this software without specific prior
+   written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+License: CC0-1.0
+ To the extent possible under law, the author(s) have dedicated all copyright
+ and related and neighboring rights to this software to the public domain
+ worldwide. This software is distributed without any warranty.
+ .
+ The full text of the CC0 1.0 Universal license is available on Debian systems
+ in /usr/share/common-licenses/CC0-1.0
+
+
+License: ISC
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
+License: LGPL-2.1+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ .
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+
+License: EDL-1.0
+ This program and the accompanying materials are made available
+ under the terms of the Eclipse Distribution License v1.0 which
+ accompanies this distribution, is reproduced below, and is
+ available at http://www.eclipse.org/org/documents/edl-v10.php
+ .
+ All rights reserved.
+ .
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ .
+ - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ .
+ - Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions and the following
+   disclaimer in the documentation and/or other materials provided
+   with the distribution.
+ .
+ - Neither the name of the Eclipse Foundation, Inc. nor the
+   names of its contributors may be used to endorse or promote
+   products derived from this software without specific prior
+   written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+
+License: MIT
+ 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.
+
+
+License: PHP-3.01
+ Redistribution and use in source and binary forms, with or without
+ modification, is permitted provided that the following conditions
+ are met:
+ .
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+ .
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+ .
+  3. The name "PHP" must not be used to endorse or promote products
+     derived from this software without prior written permission. For
+     written permission, please contact group@php.net.
+ .
+  4. Products derived from this software may not be called "PHP", nor
+     may "PHP" appear in their name, without prior written permission
+     from group@php.net.  You may indicate that your software works in
+     conjunction with PHP by saying "Foo for PHP" instead of calling
+     it "PHP Foo" or "phpfoo"
+ .
+  5. The PHP Group may publish revised and/or new versions of the
+     license from time to time. Each version will be given a
+     distinguishing version number.
+     Once covered code has been published under a particular version
+     of the license, you may always continue to use it under the terms
+     of that version. You may also choose to use such covered code
+     under the terms of any subsequent version of the license
+     published by the PHP Group. No one other than the PHP Group has
+     the right to modify the terms applicable to covered code created
+     under this License.
+ .
+  6. Redistributions of any form whatsoever must retain the following
+     acknowledgment:
+     "This product includes PHP software, freely available from
+     <http://www.php.net/software/>".
+ .
+ THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE PHP
+ DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/debian/dfsg_clean.sh b/debian/dfsg_clean.sh
new file mode 100755 (executable)
index 0000000..bda6999
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+rm -r deps
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..ae0ec72
--- /dev/null
@@ -0,0 +1,2 @@
+THREADING.md
+docs/*
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644 (file)
index 0000000..ed83839
--- /dev/null
@@ -0,0 +1,2 @@
+[pq]
+patch-numbers = False
\ No newline at end of file
diff --git a/debian/libgit2-27.install b/debian/libgit2-27.install
new file mode 100644 (file)
index 0000000..7993f87
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/*/lib*so.*
diff --git a/debian/libgit2-27.symbols b/debian/libgit2-27.symbols
new file mode 100644 (file)
index 0000000..fee6c59
--- /dev/null
@@ -0,0 +1,804 @@
+# SymbolsHelper-Confirmed: 0.27.0 amd64
+libgit2.so.27 libgit2-27 #MINVER#
+ git_annotated_commit_free@Base 0.26.0
+ git_annotated_commit_from_fetchhead@Base 0.26.0
+ git_annotated_commit_from_ref@Base 0.26.0
+ git_annotated_commit_from_revspec@Base 0.26.0
+ git_annotated_commit_id@Base 0.26.0
+ git_annotated_commit_lookup@Base 0.26.0
+ git_attr_add_macro@Base 0.26.0
+ git_attr_cache_flush@Base 0.26.0
+ git_attr_foreach@Base 0.26.0
+ git_attr_get@Base 0.26.0
+ git_attr_get_many@Base 0.26.0
+ git_attr_value@Base 0.26.0
+ git_blame_buffer@Base 0.26.0
+ git_blame_file@Base 0.26.0
+ git_blame_free@Base 0.26.0
+ git_blame_get_hunk_byindex@Base 0.26.0
+ git_blame_get_hunk_byline@Base 0.26.0
+ git_blame_get_hunk_count@Base 0.26.0
+ git_blame_init_options@Base 0.26.0
+ git_blob_create_frombuffer@Base 0.26.0
+ git_blob_create_fromdisk@Base 0.26.0
+ git_blob_create_fromstream@Base 0.26.0
+ git_blob_create_fromstream_commit@Base 0.26.0
+ git_blob_create_fromworkdir@Base 0.26.0
+ git_blob_dup@Base 0.26.0
+ git_blob_filtered_content@Base 0.26.0
+ git_blob_free@Base 0.26.0
+ git_blob_id@Base 0.26.0
+ git_blob_is_binary@Base 0.26.0
+ git_blob_lookup@Base 0.26.0
+ git_blob_lookup_prefix@Base 0.26.0
+ git_blob_owner@Base 0.26.0
+ git_blob_rawcontent@Base 0.26.0
+ git_blob_rawsize@Base 0.26.0
+ git_branch_create@Base 0.26.0
+ git_branch_create_from_annotated@Base 0.26.0
+ git_branch_delete@Base 0.26.0
+ git_branch_is_checked_out@Base 0.26.0
+ git_branch_is_head@Base 0.26.0
+ git_branch_iterator_free@Base 0.26.0
+ git_branch_iterator_new@Base 0.26.0
+ git_branch_lookup@Base 0.26.0
+ git_branch_move@Base 0.26.0
+ git_branch_name@Base 0.26.0
+ git_branch_next@Base 0.26.0
+ git_branch_remote_name@Base 0.26.0
+ git_branch_set_upstream@Base 0.26.0
+ git_branch_upstream@Base 0.26.0
+ git_branch_upstream_name@Base 0.26.0
+ git_branch_upstream_remote@Base 0.26.0
+ git_buf_contains_nul@Base 0.26.0
+ git_buf_free@Base 0.26.0
+ git_buf_grow@Base 0.26.0
+ git_buf_is_binary@Base 0.26.0
+ git_buf_set@Base 0.26.0
+ git_checkout_head@Base 0.26.0
+ git_checkout_index@Base 0.26.0
+ git_checkout_init_options@Base 0.26.0
+ git_checkout_tree@Base 0.26.0
+ git_cherrypick@Base 0.26.0
+ git_cherrypick_commit@Base 0.26.0
+ git_cherrypick_init_options@Base 0.26.0
+ git_clone@Base 0.26.0
+ git_clone_init_options@Base 0.26.0
+ git_commit_amend@Base 0.26.0
+ git_commit_author@Base 0.26.0
+ git_commit_body@Base 0.26.0
+ git_commit_committer@Base 0.26.0
+ git_commit_create@Base 0.26.0
+ git_commit_create_buffer@Base 0.26.0
+ git_commit_create_from_callback@Base 0.26.0
+ git_commit_create_from_ids@Base 0.26.0
+ git_commit_create_v@Base 0.26.0
+ git_commit_create_with_signature@Base 0.26.0
+ git_commit_dup@Base 0.26.0
+ git_commit_extract_signature@Base 0.26.0
+ git_commit_free@Base 0.26.0
+ git_commit_header_field@Base 0.26.0
+ git_commit_id@Base 0.26.0
+ git_commit_lookup@Base 0.26.0
+ git_commit_lookup_prefix@Base 0.26.0
+ git_commit_message@Base 0.26.0
+ git_commit_message_encoding@Base 0.26.0
+ git_commit_message_raw@Base 0.26.0
+ git_commit_nth_gen_ancestor@Base 0.26.0
+ git_commit_owner@Base 0.26.0
+ git_commit_parent@Base 0.26.0
+ git_commit_parent_id@Base 0.26.0
+ git_commit_parentcount@Base 0.26.0
+ git_commit_raw_header@Base 0.26.0
+ git_commit_summary@Base 0.26.0
+ git_commit_time@Base 0.26.0
+ git_commit_time_offset@Base 0.26.0
+ git_commit_tree@Base 0.26.0
+ git_commit_tree_id@Base 0.26.0
+ git_config_add_backend@Base 0.26.0
+ git_config_add_file_ondisk@Base 0.26.0
+ git_config_backend_foreach_match@Base 0.26.0
+ git_config_delete_entry@Base 0.26.0
+ git_config_delete_multivar@Base 0.26.0
+ git_config_entry_free@Base 0.26.0
+ git_config_find_global@Base 0.26.0
+ git_config_find_programdata@Base 0.26.0
+ git_config_find_system@Base 0.26.0
+ git_config_find_xdg@Base 0.26.0
+ git_config_foreach@Base 0.26.0
+ git_config_foreach_match@Base 0.26.0
+ git_config_free@Base 0.26.0
+ git_config_get_bool@Base 0.26.0
+ git_config_get_entry@Base 0.26.0
+ git_config_get_int32@Base 0.26.0
+ git_config_get_int64@Base 0.26.0
+ git_config_get_mapped@Base 0.26.0
+ git_config_get_multivar_foreach@Base 0.26.0
+ git_config_get_path@Base 0.26.0
+ git_config_get_string@Base 0.26.0
+ git_config_get_string_buf@Base 0.26.0
+ git_config_init_backend@Base 0.26.0
+ git_config_iterator_free@Base 0.26.0
+ git_config_iterator_glob_new@Base 0.26.0
+ git_config_iterator_new@Base 0.26.0
+ git_config_lock@Base 0.26.0
+ git_config_lookup_map_value@Base 0.26.0
+ git_config_multivar_iterator_new@Base 0.26.0
+ git_config_new@Base 0.26.0
+ git_config_next@Base 0.26.0
+ git_config_open_default@Base 0.26.0
+ git_config_open_global@Base 0.26.0
+ git_config_open_level@Base 0.26.0
+ git_config_open_ondisk@Base 0.26.0
+ git_config_parse_bool@Base 0.26.0
+ git_config_parse_int32@Base 0.26.0
+ git_config_parse_int64@Base 0.26.0
+ git_config_parse_path@Base 0.26.0
+ git_config_set_bool@Base 0.26.0
+ git_config_set_int32@Base 0.26.0
+ git_config_set_int64@Base 0.26.0
+ git_config_set_multivar@Base 0.26.0
+ git_config_set_string@Base 0.26.0
+ git_config_snapshot@Base 0.26.0
+ git_config_unlock@Base 0.26.0
+ git_cred_default_new@Base 0.26.0
+ git_cred_free@Base 0.26.0
+ git_cred_has_username@Base 0.26.0
+ git_cred_ssh_custom_new@Base 0.26.0
+ git_cred_ssh_interactive_new@Base 0.26.0
+ git_cred_ssh_key_from_agent@Base 0.26.0
+ git_cred_ssh_key_memory_new@Base 0.26.0
+ git_cred_ssh_key_new@Base 0.26.0
+ git_cred_username_new@Base 0.26.0
+ git_cred_userpass@Base 0.26.0
+ git_cred_userpass_plaintext_new@Base 0.26.0
+ git_describe_commit@Base 0.26.0
+ git_describe_format@Base 0.26.0
+ git_describe_init_format_options@Base 0.26.0
+ git_describe_init_options@Base 0.26.0
+ git_describe_result_free@Base 0.26.0
+ git_describe_workdir@Base 0.26.0
+ git_diff_blob_to_buffer@Base 0.26.0
+ git_diff_blobs@Base 0.26.0
+ git_diff_buffers@Base 0.26.0
+ git_diff_commit_as_email@Base 0.26.0
+ git_diff_find_init_options@Base 0.26.0
+ git_diff_find_similar@Base 0.26.0
+ git_diff_foreach@Base 0.26.0
+ git_diff_format_email@Base 0.26.0
+ git_diff_format_email_init_options@Base 0.26.0
+ git_diff_free@Base 0.26.0
+ git_diff_from_buffer@Base 0.26.0
+ git_diff_get_delta@Base 0.26.0
+ git_diff_get_perfdata@Base 0.26.0
+ git_diff_get_stats@Base 0.26.0
+ git_diff_index_to_index@Base 0.26.0
+ git_diff_index_to_workdir@Base 0.26.0
+ git_diff_init_options@Base 0.26.0
+ git_diff_is_sorted_icase@Base 0.26.0
+ git_diff_merge@Base 0.26.0
+ git_diff_num_deltas@Base 0.26.0
+ git_diff_num_deltas_of_type@Base 0.26.0
+ git_diff_patchid@Base 0.27.0
+ git_diff_patchid_init_options@Base 0.27.0
+ git_diff_print@Base 0.26.0
+ git_diff_print_callback__to_buf@Base 0.26.0
+ git_diff_print_callback__to_file_handle@Base 0.26.0
+ git_diff_stats_deletions@Base 0.26.0
+ git_diff_stats_files_changed@Base 0.26.0
+ git_diff_stats_free@Base 0.26.0
+ git_diff_stats_insertions@Base 0.26.0
+ git_diff_stats_to_buf@Base 0.26.0
+ git_diff_status_char@Base 0.26.0
+ git_diff_to_buf@Base 0.26.0
+ git_diff_tree_to_index@Base 0.26.0
+ git_diff_tree_to_tree@Base 0.26.0
+ git_diff_tree_to_workdir@Base 0.26.0
+ git_diff_tree_to_workdir_with_index@Base 0.26.0
+ git_fetch_init_options@Base 0.26.0
+ git_filter_init@Base 0.26.0
+ git_filter_list_apply_to_blob@Base 0.26.0
+ git_filter_list_apply_to_data@Base 0.26.0
+ git_filter_list_apply_to_file@Base 0.26.0
+ git_filter_list_contains@Base 0.26.0
+ git_filter_list_free@Base 0.26.0
+ git_filter_list_length@Base 0.26.0
+ git_filter_list_load@Base 0.26.0
+ git_filter_list_new@Base 0.26.0
+ git_filter_list_push@Base 0.26.0
+ git_filter_list_stream_blob@Base 0.26.0
+ git_filter_list_stream_data@Base 0.26.0
+ git_filter_list_stream_file@Base 0.26.0
+ git_filter_lookup@Base 0.26.0
+ git_filter_register@Base 0.26.0
+ git_filter_source_filemode@Base 0.26.0
+ git_filter_source_flags@Base 0.26.0
+ git_filter_source_id@Base 0.26.0
+ git_filter_source_mode@Base 0.26.0
+ git_filter_source_path@Base 0.26.0
+ git_filter_source_repo@Base 0.26.0
+ git_filter_unregister@Base 0.26.0
+ git_graph_ahead_behind@Base 0.26.0
+ git_graph_descendant_of@Base 0.26.0
+ git_hashsig_compare@Base 0.26.0
+ git_hashsig_create@Base 0.26.0
+ git_hashsig_create_fromfile@Base 0.26.0
+ git_hashsig_free@Base 0.26.0
+ git_ignore_add_rule@Base 0.26.0
+ git_ignore_clear_internal_rules@Base 0.26.0
+ git_ignore_path_is_ignored@Base 0.26.0
+ git_index_add@Base 0.26.0
+ git_index_add_all@Base 0.26.0
+ git_index_add_bypath@Base 0.26.0
+ git_index_add_frombuffer@Base 0.26.0
+ git_index_caps@Base 0.26.0
+ git_index_checksum@Base 0.26.0
+ git_index_clear@Base 0.26.0
+ git_index_conflict_add@Base 0.26.0
+ git_index_conflict_cleanup@Base 0.26.0
+ git_index_conflict_get@Base 0.26.0
+ git_index_conflict_iterator_free@Base 0.26.0
+ git_index_conflict_iterator_new@Base 0.26.0
+ git_index_conflict_next@Base 0.26.0
+ git_index_conflict_remove@Base 0.26.0
+ git_index_entry_is_conflict@Base 0.26.0
+ git_index_entry_stage@Base 0.26.0
+ git_index_entrycount@Base 0.26.0
+ git_index_find@Base 0.26.0
+ git_index_find_prefix@Base 0.26.0
+ git_index_free@Base 0.26.0
+ git_index_get_byindex@Base 0.26.0
+ git_index_get_bypath@Base 0.26.0
+ git_index_has_conflicts@Base 0.26.0
+ git_index_name_add@Base 0.26.0
+ git_index_name_clear@Base 0.26.0
+ git_index_name_entrycount@Base 0.26.0
+ git_index_name_get_byindex@Base 0.26.0
+ git_index_new@Base 0.26.0
+ git_index_open@Base 0.26.0
+ git_index_owner@Base 0.26.0
+ git_index_path@Base 0.26.0
+ git_index_read@Base 0.26.0
+ git_index_read_tree@Base 0.26.0
+ git_index_remove@Base 0.26.0
+ git_index_remove_all@Base 0.26.0
+ git_index_remove_bypath@Base 0.26.0
+ git_index_remove_directory@Base 0.26.0
+ git_index_reuc_add@Base 0.26.0
+ git_index_reuc_clear@Base 0.26.0
+ git_index_reuc_entrycount@Base 0.26.0
+ git_index_reuc_find@Base 0.26.0
+ git_index_reuc_get_byindex@Base 0.26.0
+ git_index_reuc_get_bypath@Base 0.26.0
+ git_index_reuc_remove@Base 0.26.0
+ git_index_set_caps@Base 0.26.0
+ git_index_set_version@Base 0.26.0
+ git_index_update_all@Base 0.26.0
+ git_index_version@Base 0.26.0
+ git_index_write@Base 0.26.0
+ git_index_write_tree@Base 0.26.0
+ git_index_write_tree_to@Base 0.26.0
+ git_indexer_append@Base 0.26.0
+ git_indexer_commit@Base 0.26.0
+ git_indexer_free@Base 0.26.0
+ git_indexer_hash@Base 0.26.0
+ git_indexer_new@Base 0.26.0
+ git_libgit2_features@Base 0.26.0
+ git_libgit2_init@Base 0.26.0
+ git_libgit2_opts@Base 0.26.0
+ git_libgit2_shutdown@Base 0.26.0
+ git_libgit2_version@Base 0.26.0
+ git_mempack_dump@Base 0.27.0
+ git_mempack_new@Base 0.27.0
+ git_mempack_reset@Base 0.27.0
+ git_merge@Base 0.26.0
+ git_merge_analysis@Base 0.26.0
+ git_merge_base@Base 0.26.0
+ git_merge_base_many@Base 0.26.0
+ git_merge_base_octopus@Base 0.26.0
+ git_merge_bases@Base 0.26.0
+ git_merge_bases_many@Base 0.26.0
+ git_merge_commits@Base 0.26.0
+ git_merge_driver_lookup@Base 0.26.0
+ git_merge_driver_register@Base 0.26.0
+ git_merge_driver_source_ancestor@Base 0.26.0
+ git_merge_driver_source_file_options@Base 0.26.0
+ git_merge_driver_source_ours@Base 0.26.0
+ git_merge_driver_source_repo@Base 0.26.0
+ git_merge_driver_source_theirs@Base 0.26.0
+ git_merge_driver_unregister@Base 0.26.0
+ git_merge_file@Base 0.26.0
+ git_merge_file_from_index@Base 0.26.0
+ git_merge_file_init_input@Base 0.26.0
+ git_merge_file_init_options@Base 0.26.0
+ git_merge_file_result_free@Base 0.26.0
+ git_merge_init_options@Base 0.26.0
+ git_merge_trees@Base 0.26.0
+ git_message_prettify@Base 0.26.0
+ git_message_trailer_array_free@Base 0.27.0
+ git_message_trailers@Base 0.27.0
+ git_note_author@Base 0.26.0
+ git_note_commit_create@Base 0.27.0
+ git_note_commit_iterator_new@Base 0.27.0
+ git_note_commit_read@Base 0.27.0
+ git_note_commit_remove@Base 0.27.0
+ git_note_committer@Base 0.26.0
+ git_note_create@Base 0.26.0
+ git_note_default_ref@Base 0.26.0
+ git_note_foreach@Base 0.26.0
+ git_note_free@Base 0.26.0
+ git_note_id@Base 0.26.0
+ git_note_iterator_free@Base 0.26.0
+ git_note_iterator_new@Base 0.26.0
+ git_note_message@Base 0.26.0
+ git_note_next@Base 0.26.0
+ git_note_read@Base 0.26.0
+ git_note_remove@Base 0.26.0
+ git_object__size@Base 0.26.0
+ git_object_dup@Base 0.26.0
+ git_object_free@Base 0.26.0
+ git_object_id@Base 0.26.0
+ git_object_lookup@Base 0.26.0
+ git_object_lookup_bypath@Base 0.26.0
+ git_object_lookup_prefix@Base 0.26.0
+ git_object_owner@Base 0.26.0
+ git_object_peel@Base 0.26.0
+ git_object_short_id@Base 0.26.0
+ git_object_string2type@Base 0.26.0
+ git_object_type2string@Base 0.26.0
+ git_object_type@Base 0.26.0
+ git_object_typeisloose@Base 0.26.0
+ git_odb_add_alternate@Base 0.26.0
+ git_odb_add_backend@Base 0.26.0
+ git_odb_add_disk_alternate@Base 0.26.0
+ git_odb_backend_loose@Base 0.26.0
+ git_odb_backend_malloc@Base 0.26.0
+ git_odb_backend_one_pack@Base 0.26.0
+ git_odb_backend_pack@Base 0.26.0
+ git_odb_exists@Base 0.26.0
+ git_odb_exists_prefix@Base 0.26.0
+ git_odb_expand_ids@Base 0.26.0
+ git_odb_foreach@Base 0.26.0
+ git_odb_free@Base 0.26.0
+ git_odb_get_backend@Base 0.26.0
+ git_odb_hash@Base 0.26.0
+ git_odb_hashfile@Base 0.26.0
+ git_odb_init_backend@Base 0.26.0
+ git_odb_new@Base 0.26.0
+ git_odb_num_backends@Base 0.26.0
+ git_odb_object_data@Base 0.26.0
+ git_odb_object_dup@Base 0.26.0
+ git_odb_object_free@Base 0.26.0
+ git_odb_object_id@Base 0.26.0
+ git_odb_object_size@Base 0.26.0
+ git_odb_object_type@Base 0.26.0
+ git_odb_open@Base 0.26.0
+ git_odb_open_rstream@Base 0.26.0
+ git_odb_open_wstream@Base 0.26.0
+ git_odb_read@Base 0.26.0
+ git_odb_read_header@Base 0.26.0
+ git_odb_read_prefix@Base 0.26.0
+ git_odb_refresh@Base 0.26.0
+ git_odb_stream_finalize_write@Base 0.26.0
+ git_odb_stream_free@Base 0.26.0
+ git_odb_stream_read@Base 0.26.0
+ git_odb_stream_write@Base 0.26.0
+ git_odb_write@Base 0.26.0
+ git_odb_write_pack@Base 0.26.0
+ git_oid_cmp@Base 0.26.0
+ git_oid_cpy@Base 0.26.0
+ git_oid_equal@Base 0.26.0
+ git_oid_fmt@Base 0.26.0
+ git_oid_fromraw@Base 0.26.0
+ git_oid_fromstr@Base 0.26.0
+ git_oid_fromstrn@Base 0.26.0
+ git_oid_fromstrp@Base 0.26.0
+ git_oid_iszero@Base 0.26.0
+ git_oid_ncmp@Base 0.26.0
+ git_oid_nfmt@Base 0.26.0
+ git_oid_pathfmt@Base 0.26.0
+ git_oid_shorten_add@Base 0.26.0
+ git_oid_shorten_free@Base 0.26.0
+ git_oid_shorten_new@Base 0.26.0
+ git_oid_strcmp@Base 0.26.0
+ git_oid_streq@Base 0.26.0
+ git_oid_tostr@Base 0.26.0
+ git_oid_tostr_s@Base 0.26.0
+ git_oidarray_free@Base 0.26.0
+ git_openssl_set_locking@Base 0.26.0
+ git_packbuilder_foreach@Base 0.26.0
+ git_packbuilder_free@Base 0.26.0
+ git_packbuilder_hash@Base 0.26.0
+ git_packbuilder_insert@Base 0.26.0
+ git_packbuilder_insert_commit@Base 0.26.0
+ git_packbuilder_insert_recur@Base 0.26.0
+ git_packbuilder_insert_tree@Base 0.26.0
+ git_packbuilder_insert_walk@Base 0.26.0
+ git_packbuilder_new@Base 0.26.0
+ git_packbuilder_object_count@Base 0.26.0
+ git_packbuilder_set_callbacks@Base 0.26.0
+ git_packbuilder_set_threads@Base 0.26.0
+ git_packbuilder_write@Base 0.26.0
+ git_packbuilder_write_buf@Base 0.26.0
+ git_packbuilder_written@Base 0.26.0
+ git_patch_free@Base 0.26.0
+ git_patch_from_blob_and_buffer@Base 0.26.0
+ git_patch_from_blobs@Base 0.26.0
+ git_patch_from_buffers@Base 0.26.0
+ git_patch_from_diff@Base 0.26.0
+ git_patch_get_delta@Base 0.26.0
+ git_patch_get_hunk@Base 0.26.0
+ git_patch_get_line_in_hunk@Base 0.26.0
+ git_patch_line_stats@Base 0.26.0
+ git_patch_num_hunks@Base 0.26.0
+ git_patch_num_lines_in_hunk@Base 0.26.0
+ git_patch_print@Base 0.26.0
+ git_patch_size@Base 0.26.0
+ git_patch_to_buf@Base 0.26.0
+ git_pathspec_free@Base 0.26.0
+ git_pathspec_match_diff@Base 0.26.0
+ git_pathspec_match_index@Base 0.26.0
+ git_pathspec_match_list_diff_entry@Base 0.26.0
+ git_pathspec_match_list_entry@Base 0.26.0
+ git_pathspec_match_list_entrycount@Base 0.26.0
+ git_pathspec_match_list_failed_entry@Base 0.26.0
+ git_pathspec_match_list_failed_entrycount@Base 0.26.0
+ git_pathspec_match_list_free@Base 0.26.0
+ git_pathspec_match_tree@Base 0.26.0
+ git_pathspec_match_workdir@Base 0.26.0
+ git_pathspec_matches_path@Base 0.26.0
+ git_pathspec_new@Base 0.26.0
+ git_proxy_init_options@Base 0.26.0
+ git_push_init_options@Base 0.26.0
+ git_rebase_abort@Base 0.26.0
+ git_rebase_commit@Base 0.26.0
+ git_rebase_finish@Base 0.26.0
+ git_rebase_free@Base 0.26.0
+ git_rebase_init@Base 0.26.0
+ git_rebase_init_options@Base 0.26.0
+ git_rebase_inmemory_index@Base 0.26.0
+ git_rebase_next@Base 0.26.0
+ git_rebase_open@Base 0.26.0
+ git_rebase_operation_byindex@Base 0.26.0
+ git_rebase_operation_current@Base 0.26.0
+ git_rebase_operation_entrycount@Base 0.26.0
+ git_refdb_backend_fs@Base 0.26.0
+ git_refdb_compress@Base 0.26.0
+ git_refdb_free@Base 0.26.0
+ git_refdb_init_backend@Base 0.26.0
+ git_refdb_new@Base 0.26.0
+ git_refdb_open@Base 0.26.0
+ git_refdb_set_backend@Base 0.26.0
+ git_reference__alloc@Base 0.26.0
+ git_reference__alloc_symbolic@Base 0.26.0
+ git_reference_cmp@Base 0.26.0
+ git_reference_create@Base 0.26.0
+ git_reference_create_matching@Base 0.26.0
+ git_reference_delete@Base 0.26.0
+ git_reference_dup@Base 0.26.0
+ git_reference_dwim@Base 0.26.0
+ git_reference_ensure_log@Base 0.26.0
+ git_reference_foreach@Base 0.26.0
+ git_reference_foreach_glob@Base 0.26.0
+ git_reference_foreach_name@Base 0.26.0
+ git_reference_free@Base 0.26.0
+ git_reference_has_log@Base 0.26.0
+ git_reference_is_branch@Base 0.26.0
+ git_reference_is_note@Base 0.26.0
+ git_reference_is_remote@Base 0.26.0
+ git_reference_is_tag@Base 0.26.0
+ git_reference_is_valid_name@Base 0.26.0
+ git_reference_iterator_free@Base 0.26.0
+ git_reference_iterator_glob_new@Base 0.26.0
+ git_reference_iterator_new@Base 0.26.0
+ git_reference_list@Base 0.26.0
+ git_reference_lookup@Base 0.26.0
+ git_reference_name@Base 0.26.0
+ git_reference_name_to_id@Base 0.26.0
+ git_reference_next@Base 0.26.0
+ git_reference_next_name@Base 0.26.0
+ git_reference_normalize_name@Base 0.26.0
+ git_reference_owner@Base 0.26.0
+ git_reference_peel@Base 0.26.0
+ git_reference_remove@Base 0.26.0
+ git_reference_rename@Base 0.26.0
+ git_reference_resolve@Base 0.26.0
+ git_reference_set_target@Base 0.26.0
+ git_reference_shorthand@Base 0.26.0
+ git_reference_symbolic_create@Base 0.26.0
+ git_reference_symbolic_create_matching@Base 0.26.0
+ git_reference_symbolic_set_target@Base 0.26.0
+ git_reference_symbolic_target@Base 0.26.0
+ git_reference_target@Base 0.26.0
+ git_reference_target_peel@Base 0.26.0
+ git_reference_type@Base 0.26.0
+ git_reflog_append@Base 0.26.0
+ git_reflog_delete@Base 0.26.0
+ git_reflog_drop@Base 0.26.0
+ git_reflog_entry_byindex@Base 0.26.0
+ git_reflog_entry_committer@Base 0.26.0
+ git_reflog_entry_id_new@Base 0.26.0
+ git_reflog_entry_id_old@Base 0.26.0
+ git_reflog_entry_message@Base 0.26.0
+ git_reflog_entrycount@Base 0.26.0
+ git_reflog_free@Base 0.26.0
+ git_reflog_read@Base 0.26.0
+ git_reflog_rename@Base 0.26.0
+ git_reflog_write@Base 0.26.0
+ git_refspec_direction@Base 0.26.0
+ git_refspec_dst@Base 0.26.0
+ git_refspec_dst_matches@Base 0.26.0
+ git_refspec_force@Base 0.26.0
+ git_refspec_rtransform@Base 0.26.0
+ git_refspec_src@Base 0.26.0
+ git_refspec_src_matches@Base 0.26.0
+ git_refspec_string@Base 0.26.0
+ git_refspec_transform@Base 0.26.0
+ git_remote_add_fetch@Base 0.26.0
+ git_remote_add_push@Base 0.26.0
+ git_remote_autotag@Base 0.26.0
+ git_remote_connect@Base 0.26.0
+ git_remote_connected@Base 0.26.0
+ git_remote_create@Base 0.26.0
+ git_remote_create_anonymous@Base 0.26.0
+ git_remote_create_detached@Base 0.27.0
+ git_remote_create_with_fetchspec@Base 0.26.0
+ git_remote_default_branch@Base 0.26.0
+ git_remote_delete@Base 0.26.0
+ git_remote_disconnect@Base 0.26.0
+ git_remote_download@Base 0.26.0
+ git_remote_dup@Base 0.26.0
+ git_remote_fetch@Base 0.26.0
+ git_remote_free@Base 0.26.0
+ git_remote_get_fetch_refspecs@Base 0.26.0
+ git_remote_get_push_refspecs@Base 0.26.0
+ git_remote_get_refspec@Base 0.26.0
+ git_remote_init_callbacks@Base 0.26.0
+ git_remote_is_valid_name@Base 0.26.0
+ git_remote_list@Base 0.26.0
+ git_remote_lookup@Base 0.26.0
+ git_remote_ls@Base 0.26.0
+ git_remote_name@Base 0.26.0
+ git_remote_owner@Base 0.26.0
+ git_remote_prune@Base 0.26.0
+ git_remote_prune_refs@Base 0.26.0
+ git_remote_push@Base 0.26.0
+ git_remote_pushurl@Base 0.26.0
+ git_remote_refspec_count@Base 0.26.0
+ git_remote_rename@Base 0.26.0
+ git_remote_set_autotag@Base 0.26.0
+ git_remote_set_pushurl@Base 0.26.0
+ git_remote_set_url@Base 0.26.0
+ git_remote_stats@Base 0.26.0
+ git_remote_stop@Base 0.26.0
+ git_remote_update_tips@Base 0.26.0
+ git_remote_upload@Base 0.26.0
+ git_remote_url@Base 0.26.0
+ git_repository__cleanup@Base 0.26.0
+ git_repository_commondir@Base 0.26.0
+ git_repository_config@Base 0.26.0
+ git_repository_config_snapshot@Base 0.26.0
+ git_repository_detach_head@Base 0.26.0
+ git_repository_discover@Base 0.26.0
+ git_repository_fetchhead_foreach@Base 0.26.0
+ git_repository_free@Base 0.26.0
+ git_repository_get_namespace@Base 0.26.0
+ git_repository_hashfile@Base 0.26.0
+ git_repository_head@Base 0.26.0
+ git_repository_head_detached@Base 0.26.0
+ git_repository_head_detached_for_worktree@Base 0.26.0
+ git_repository_head_for_worktree@Base 0.26.0
+ git_repository_head_unborn@Base 0.26.0
+ git_repository_ident@Base 0.26.0
+ git_repository_index@Base 0.26.0
+ git_repository_init@Base 0.26.0
+ git_repository_init_ext@Base 0.26.0
+ git_repository_init_init_options@Base 0.26.0
+ git_repository_is_bare@Base 0.26.0
+ git_repository_is_empty@Base 0.26.0
+ git_repository_is_shallow@Base 0.26.0
+ git_repository_is_worktree@Base 0.26.0
+ git_repository_item_path@Base 0.26.0
+ git_repository_mergehead_foreach@Base 0.26.0
+ git_repository_message@Base 0.26.0
+ git_repository_message_remove@Base 0.26.0
+ git_repository_new@Base 0.26.0
+ git_repository_odb@Base 0.26.0
+ git_repository_open@Base 0.26.0
+ git_repository_open_bare@Base 0.26.0
+ git_repository_open_ext@Base 0.26.0
+ git_repository_open_from_worktree@Base 0.26.0
+ git_repository_path@Base 0.26.0
+ git_repository_refdb@Base 0.26.0
+ git_repository_reinit_filesystem@Base 0.26.0
+ git_repository_set_bare@Base 0.26.0
+ git_repository_set_config@Base 0.26.0
+ git_repository_set_head@Base 0.26.0
+ git_repository_set_head_detached@Base 0.26.0
+ git_repository_set_head_detached_from_annotated@Base 0.26.0
+ git_repository_set_ident@Base 0.26.0
+ git_repository_set_index@Base 0.26.0
+ git_repository_set_namespace@Base 0.26.0
+ git_repository_set_odb@Base 0.26.0
+ git_repository_set_refdb@Base 0.26.0
+ git_repository_set_workdir@Base 0.26.0
+ git_repository_state@Base 0.26.0
+ git_repository_state_cleanup@Base 0.26.0
+ git_repository_submodule_cache_all@Base 0.26.0
+ git_repository_submodule_cache_clear@Base 0.26.0
+ git_repository_workdir@Base 0.26.0
+ git_repository_wrap_odb@Base 0.26.0
+ git_reset@Base 0.26.0
+ git_reset_default@Base 0.26.0
+ git_reset_from_annotated@Base 0.26.0
+ git_revert@Base 0.26.0
+ git_revert_commit@Base 0.26.0
+ git_revert_init_options@Base 0.26.0
+ git_revparse@Base 0.26.0
+ git_revparse_ext@Base 0.26.0
+ git_revparse_single@Base 0.26.0
+ git_revwalk_add_hide_cb@Base 0.26.0
+ git_revwalk_free@Base 0.26.0
+ git_revwalk_hide@Base 0.26.0
+ git_revwalk_hide_glob@Base 0.26.0
+ git_revwalk_hide_head@Base 0.26.0
+ git_revwalk_hide_ref@Base 0.26.0
+ git_revwalk_new@Base 0.26.0
+ git_revwalk_next@Base 0.26.0
+ git_revwalk_push@Base 0.26.0
+ git_revwalk_push_glob@Base 0.26.0
+ git_revwalk_push_head@Base 0.26.0
+ git_revwalk_push_range@Base 0.26.0
+ git_revwalk_push_ref@Base 0.26.0
+ git_revwalk_repository@Base 0.26.0
+ git_revwalk_reset@Base 0.26.0
+ git_revwalk_simplify_first_parent@Base 0.26.0
+ git_revwalk_sorting@Base 0.26.0
+ git_signature_default@Base 0.26.0
+ git_signature_dup@Base 0.26.0
+ git_signature_free@Base 0.26.0
+ git_signature_from_buffer@Base 0.26.0
+ git_signature_new@Base 0.26.0
+ git_signature_now@Base 0.26.0
+ git_smart_subtransport_git@Base 0.26.0
+ git_smart_subtransport_http@Base 0.26.0
+ git_smart_subtransport_ssh@Base 0.26.0
+ git_stash_apply@Base 0.26.0
+ git_stash_apply_init_options@Base 0.26.0
+ git_stash_drop@Base 0.26.0
+ git_stash_foreach@Base 0.26.0
+ git_stash_pop@Base 0.26.0
+ git_stash_save@Base 0.26.0
+ git_status_byindex@Base 0.26.0
+ git_status_file@Base 0.26.0
+ git_status_foreach@Base 0.26.0
+ git_status_foreach_ext@Base 0.26.0
+ git_status_init_options@Base 0.26.0
+ git_status_list_entrycount@Base 0.26.0
+ git_status_list_free@Base 0.26.0
+ git_status_list_get_perfdata@Base 0.26.0
+ git_status_list_new@Base 0.26.0
+ git_status_should_ignore@Base 0.26.0
+ git_strarray_copy@Base 0.26.0
+ git_strarray_free@Base 0.26.0
+ git_stream_register_tls@Base 0.26.0
+ git_submodule_add_finalize@Base 0.26.0
+ git_submodule_add_setup@Base 0.26.0
+ git_submodule_add_to_index@Base 0.26.0
+ git_submodule_branch@Base 0.26.0
+ git_submodule_fetch_recurse_submodules@Base 0.26.0
+ git_submodule_foreach@Base 0.26.0
+ git_submodule_free@Base 0.26.0
+ git_submodule_head_id@Base 0.26.0
+ git_submodule_ignore@Base 0.26.0
+ git_submodule_index_id@Base 0.26.0
+ git_submodule_init@Base 0.26.0
+ git_submodule_location@Base 0.26.0
+ git_submodule_lookup@Base 0.26.0
+ git_submodule_name@Base 0.26.0
+ git_submodule_open@Base 0.26.0
+ git_submodule_owner@Base 0.26.0
+ git_submodule_path@Base 0.26.0
+ git_submodule_reload@Base 0.26.0
+ git_submodule_repo_init@Base 0.26.0
+ git_submodule_resolve_url@Base 0.26.0
+ git_submodule_set_branch@Base 0.26.0
+ git_submodule_set_fetch_recurse_submodules@Base 0.26.0
+ git_submodule_set_ignore@Base 0.26.0
+ git_submodule_set_update@Base 0.26.0
+ git_submodule_set_url@Base 0.26.0
+ git_submodule_status@Base 0.26.0
+ git_submodule_sync@Base 0.26.0
+ git_submodule_update@Base 0.26.0
+ git_submodule_update_init_options@Base 0.26.0
+ git_submodule_update_strategy@Base 0.26.0
+ git_submodule_url@Base 0.26.0
+ git_submodule_wd_id@Base 0.26.0
+ git_tag_annotation_create@Base 0.26.0
+ git_tag_create@Base 0.26.0
+ git_tag_create_frombuffer@Base 0.26.0
+ git_tag_create_lightweight@Base 0.26.0
+ git_tag_delete@Base 0.26.0
+ git_tag_dup@Base 0.26.0
+ git_tag_foreach@Base 0.26.0
+ git_tag_free@Base 0.26.0
+ git_tag_id@Base 0.26.0
+ git_tag_list@Base 0.26.0
+ git_tag_list_match@Base 0.26.0
+ git_tag_lookup@Base 0.26.0
+ git_tag_lookup_prefix@Base 0.26.0
+ git_tag_message@Base 0.26.0
+ git_tag_name@Base 0.26.0
+ git_tag_owner@Base 0.26.0
+ git_tag_peel@Base 0.26.0
+ git_tag_tagger@Base 0.26.0
+ git_tag_target@Base 0.26.0
+ git_tag_target_id@Base 0.26.0
+ git_tag_target_type@Base 0.26.0
+ git_trace_set@Base 0.26.0
+ git_transaction_commit@Base 0.26.0
+ git_transaction_free@Base 0.26.0
+ git_transaction_lock_ref@Base 0.26.0
+ git_transaction_new@Base 0.26.0
+ git_transaction_remove@Base 0.26.0
+ git_transaction_set_reflog@Base 0.26.0
+ git_transaction_set_symbolic_target@Base 0.26.0
+ git_transaction_set_target@Base 0.26.0
+ git_transport_init@Base 0.26.0
+ git_transport_local@Base 0.26.0
+ git_transport_new@Base 0.26.0
+ git_transport_register@Base 0.26.0
+ git_transport_smart@Base 0.26.0
+ git_transport_smart_certificate_check@Base 0.26.0
+ git_transport_smart_credentials@Base 0.26.0
+ git_transport_smart_proxy_options@Base 0.26.0
+ git_transport_ssh_with_paths@Base 0.26.0
+ git_transport_unregister@Base 0.26.0
+ git_tree_create_updated@Base 0.26.0
+ git_tree_dup@Base 0.26.0
+ git_tree_entry_byid@Base 0.26.0
+ git_tree_entry_byindex@Base 0.26.0
+ git_tree_entry_byname@Base 0.26.0
+ git_tree_entry_bypath@Base 0.26.0
+ git_tree_entry_cmp@Base 0.26.0
+ git_tree_entry_dup@Base 0.26.0
+ git_tree_entry_filemode@Base 0.26.0
+ git_tree_entry_filemode_raw@Base 0.26.0
+ git_tree_entry_free@Base 0.26.0
+ git_tree_entry_id@Base 0.26.0
+ git_tree_entry_name@Base 0.26.0
+ git_tree_entry_to_object@Base 0.26.0
+ git_tree_entry_type@Base 0.26.0
+ git_tree_entrycount@Base 0.26.0
+ git_tree_free@Base 0.26.0
+ git_tree_id@Base 0.26.0
+ git_tree_lookup@Base 0.26.0
+ git_tree_lookup_prefix@Base 0.26.0
+ git_tree_owner@Base 0.26.0
+ git_tree_walk@Base 0.26.0
+ git_treebuilder_clear@Base 0.26.0
+ git_treebuilder_entrycount@Base 0.26.0
+ git_treebuilder_filter@Base 0.26.0
+ git_treebuilder_free@Base 0.26.0
+ git_treebuilder_get@Base 0.26.0
+ git_treebuilder_insert@Base 0.26.0
+ git_treebuilder_new@Base 0.26.0
+ git_treebuilder_remove@Base 0.26.0
+ git_treebuilder_write@Base 0.26.0
+ git_treebuilder_write_with_buffer@Base 0.26.0
+ git_worktree_add@Base 0.26.0
+ git_worktree_free@Base 0.26.0
+ git_worktree_is_locked@Base 0.26.0
+ git_worktree_is_prunable@Base 0.26.0
+ git_worktree_list@Base 0.26.0
+ git_worktree_lock@Base 0.26.0
+ git_worktree_lookup@Base 0.26.0
+ git_worktree_open_from_repository@Base 0.26.0
+ git_worktree_prune@Base 0.26.0
+ git_worktree_prune_init_options@Base 0.26.0
+ git_worktree_unlock@Base 0.26.0
+ git_worktree_validate@Base 0.26.0
+ giterr_clear@Base 0.26.0
+ giterr_last@Base 0.26.0
+ giterr_set_oom@Base 0.26.0
+ giterr_set_str@Base 0.26.0
diff --git a/debian/libgit2-dev.examples b/debian/libgit2-dev.examples
new file mode 100644 (file)
index 0000000..e39721e
--- /dev/null
@@ -0,0 +1 @@
+examples/*
diff --git a/debian/libgit2-dev.install b/debian/libgit2-dev.install
new file mode 100644 (file)
index 0000000..afb1d67
--- /dev/null
@@ -0,0 +1,4 @@
+/usr/include
+/usr/lib/*/lib*.a
+/usr/lib/*/lib*.so
+/usr/lib/*/pkgconfig
diff --git a/debian/patches/disable-online-tests.patch b/debian/patches/disable-online-tests.patch
new file mode 100644 (file)
index 0000000..6218210
--- /dev/null
@@ -0,0 +1,19 @@
+Skip tests that needs an active internet connection
+
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -53,11 +53,11 @@
+ ENDIF ()
+ IF (USE_HTTPS)
+-      ADD_TEST(libgit2_clar "${libgit2_BINARY_DIR}/libgit2_clar" -ionline -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
++      ADD_TEST(libgit2_clar "${libgit2_BINARY_DIR}/libgit2_clar" -xonline -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
+ ELSE ()
+       ADD_TEST(libgit2_clar "${libgit2_BINARY_DIR}/libgit2_clar" -v -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style)
+ ENDIF ()
+ # Add additional test targets that require special setup
+-ADD_TEST(libgit2_clar-proxy_credentials "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_in_url -sonline::clone::proxy_credentials_request)
+-ADD_TEST(libgit2_clar-ssh "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths)
++ADD_TEST(libgit2_clar-proxy_credentials "${libgit2_BINARY_DIR}/libgit2_clar" -v -xonline::clone::proxy_credentials_in_url -xonline::clone::proxy_credentials_request)
++ADD_TEST(libgit2_clar-ssh "${libgit2_BINARY_DIR}/libgit2_clar" -v -xonline::push -xonline::clone::ssh_cert -xonline::clone::ssh_with_paths)
diff --git a/debian/patches/fix-stack-smashing-error.patch b/debian/patches/fix-stack-smashing-error.patch
new file mode 100644 (file)
index 0000000..4eba11f
--- /dev/null
@@ -0,0 +1,19 @@
+Description: Fix stack smashing error on 32-bit targets 
+ Fix stack smashing due to wrong size of struct stat on the
+ stack on 32-bit systems with 64-bit file descriptor offsets
+ enabled by adding -D_FILE_OFFSET_BITS=64 when compiling the
+ test suite.
+ .
+Author: Andreas Baumann <mail@andreasbaumann.cc>
+Last-Update: 2018-05-26
+
+--- libgit2-0.27.0+dfsg.1.orig/tests/CMakeLists.txt
++++ libgit2-0.27.0+dfsg.1/tests/CMakeLists.txt
+@@ -9,6 +9,7 @@ SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURC
+ SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
+ ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
+ ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\")
++ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
+ INCLUDE_DIRECTORIES(${CLAR_PATH} ${libgit2_BINARY_DIR}/src)
+ FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h)
diff --git a/debian/patches/index-Fix-alignment-issues-in-write_disk_entry.patch b/debian/patches/index-Fix-alignment-issues-in-write_disk_entry.patch
new file mode 100644 (file)
index 0000000..95ff290
--- /dev/null
@@ -0,0 +1,86 @@
+From 2ce5a21f46e78cdc3f04cb783e372828494199d5 Mon Sep 17 00:00:00 2001
+From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Date: Fri, 25 May 2018 01:41:33 +0200
+Subject: [PATCH] index: Fix alignment issues in write_disk_entry()
+
+In order to avoid alignment issues on certain target architectures,
+it is necessary to use memcpy() when modifying elements of a struct
+inside a buffer returned by git_filebuf_reserve().
+---
+ src/index.c | 42 +++++++++++++++++++++---------------------
+ 1 file changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/src/index.c b/src/index.c
+index a867547fbb..3dcb6dde77 100644
+--- a/src/index.c
++++ b/src/index.c
+@@ -2605,7 +2605,7 @@ static bool is_index_extended(git_index *index)
+ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const char *last)
+ {
+       void *mem = NULL;
+-      struct entry_short *ondisk;
++      struct entry_short ondisk;
+       size_t path_len, disk_size;
+       int varint_len = 0;
+       char *path;
+@@ -2633,9 +2633,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
+       if (git_filebuf_reserve(file, &mem, disk_size) < 0)
+               return -1;
+-      ondisk = (struct entry_short *)mem;
+-
+-      memset(ondisk, 0x0, disk_size);
++      memset(mem, 0x0, disk_size);
+       /**
+        * Yes, we have to truncate.
+@@ -2647,30 +2645,32 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
+        *
+        * In 2038 I will be either too dead or too rich to care about this
+        */
+-      ondisk->ctime.seconds = htonl((uint32_t)entry->ctime.seconds);
+-      ondisk->mtime.seconds = htonl((uint32_t)entry->mtime.seconds);
+-      ondisk->ctime.nanoseconds = htonl(entry->ctime.nanoseconds);
+-      ondisk->mtime.nanoseconds = htonl(entry->mtime.nanoseconds);
+-      ondisk->dev = htonl(entry->dev);
+-      ondisk->ino = htonl(entry->ino);
+-      ondisk->mode = htonl(entry->mode);
+-      ondisk->uid = htonl(entry->uid);
+-      ondisk->gid = htonl(entry->gid);
+-      ondisk->file_size = htonl((uint32_t)entry->file_size);
++      ondisk.ctime.seconds = htonl((uint32_t)entry->ctime.seconds);
++      ondisk.mtime.seconds = htonl((uint32_t)entry->mtime.seconds);
++      ondisk.ctime.nanoseconds = htonl(entry->ctime.nanoseconds);
++      ondisk.mtime.nanoseconds = htonl(entry->mtime.nanoseconds);
++      ondisk.dev = htonl(entry->dev);
++      ondisk.ino = htonl(entry->ino);
++      ondisk.mode = htonl(entry->mode);
++      ondisk.uid = htonl(entry->uid);
++      ondisk.gid = htonl(entry->gid);
++      ondisk.file_size = htonl((uint32_t)entry->file_size);
+-      git_oid_cpy(&ondisk->oid, &entry->id);
++      git_oid_cpy(&ondisk.oid, &entry->id);
+-      ondisk->flags = htons(entry->flags);
++      ondisk.flags = htons(entry->flags);
+       if (entry->flags & GIT_IDXENTRY_EXTENDED) {
+-              struct entry_long *ondisk_ext;
+-              ondisk_ext = (struct entry_long *)ondisk;
+-              ondisk_ext->flags_extended = htons(entry->flags_extended &
++              struct entry_long ondisk_ext;
++              memcpy(&ondisk_ext, &ondisk, sizeof(struct entry_short));
++              ondisk_ext.flags_extended = htons(entry->flags_extended &
+                       GIT_IDXENTRY_EXTENDED_FLAGS);
+-              path = ondisk_ext->path;
++              memcpy(mem, &ondisk_ext, sizeof(struct entry_long));
++              path = ((struct entry_long*)mem)->path;
+               disk_size -= offsetof(struct entry_long, path);
+       } else {
+-              path = ondisk->path;
++              memcpy(mem, &ondisk, sizeof(struct entry_short));
++              path = ((struct entry_short*)mem)->path;
+               disk_size -= offsetof(struct entry_short, path);
+       }
diff --git a/debian/patches/remove-mbedtls-from-pkgconfig.patch b/debian/patches/remove-mbedtls-from-pkgconfig.patch
new file mode 100644 (file)
index 0000000..bcfb3b1
--- /dev/null
@@ -0,0 +1,25 @@
+From 64a78a80fc2e3dd0d94fbc248202bb676075f78a Mon Sep 17 00:00:00 2001
+From: Etienne Samson <samson.etienne@gmail.com>
+Date: Fri, 25 May 2018 09:28:52 +0000
+Subject: [PATCH] mbedtls: don't require mbedtls from our pkgconfig file
+
+mbedTLS has no pkgconfig file, hence we can't require it. For now, pass its link flags as our own.
+---
+ src/CMakeLists.txt | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -236,8 +236,10 @@
+               SET(GIT_MBEDTLS 1)
+               LIST(APPEND LIBGIT2_INCLUDES ${MBEDTLS_INCLUDE_DIR})
+               LIST(APPEND LIBGIT2_LIBS ${MBEDTLS_LIBRARIES})
+-              LIST(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LDFLAGS})
+-              LIST(APPEND LIBGIT2_PC_REQUIRES "mbedtls")
++              # mbedTLS has no pkgconfig file, hence we can't require it
++              # https://github.com/ARMmbed/mbedtls/issues/228
++              # For now, pass its link flags as our own
++              LIST(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LIBRARIES})
+       ELSEIF (HTTPS_BACKEND STREQUAL "WinHTTP")
+               # WinHTTP setup was handled in the WinHTTP-specific block above
+       ELSE()
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..73de064
--- /dev/null
@@ -0,0 +1,6 @@
+use-mbedtls.patch
+disable-online-tests.patch
+remove-mbedtls-from-pkgconfig.patch
+index-Fix-alignment-issues-in-write_disk_entry.patch
+fix-stack-smashing-error.patch
+u-segfault-fix.patch
diff --git a/debian/patches/u-segfault-fix.patch b/debian/patches/u-segfault-fix.patch
new file mode 100644 (file)
index 0000000..0037a02
--- /dev/null
@@ -0,0 +1,98 @@
+commit d1919485a5541fb3171d6fa835c7c0de41243dea
+Author: Edward Thomson <ethomson@edwardthomson.com>
+Date:   Sun Aug 5 11:01:14 2018 +0100
+
+    threads::diff: use separate git_repository objects
+    
+    Our thread policies state that we cannot re-use the `git_repository`
+    across threads.  Our tests cannot deviate from that.
+
+diff --git a/tests/threads/diff.c b/tests/threads/diff.c
+index 256040265..ab34b32a1 100644
+--- a/tests/threads/diff.c
++++ b/tests/threads/diff.c
+@@ -76,26 +76,29 @@ static void free_trees(void)
+ static void *run_index_diffs(void *arg)
+ {
+       int thread = *(int *)arg;
++      git_repository *repo;
+       git_diff_options opts = GIT_DIFF_OPTIONS_INIT;
+       git_diff *diff = NULL;
+       size_t i;
+       int exp[4] = { 0, 0, 0, 0 };
++      cl_git_pass(git_repository_open(&repo, git_repository_path(_repo)));
++
+       switch (thread & 0x03) {
+       case 0: /* diff index to workdir */;
+-              cl_git_pass(git_diff_index_to_workdir(&diff, _repo, NULL, &opts));
++              cl_git_pass(git_diff_index_to_workdir(&diff, repo, NULL, &opts));
+               break;
+       case 1: /* diff tree 'a' to index */;
+-              cl_git_pass(git_diff_tree_to_index(&diff, _repo, _a, NULL, &opts));
++              cl_git_pass(git_diff_tree_to_index(&diff, repo, _a, NULL, &opts));
+               break;
+       case 2: /* diff tree 'b' to index */;
+-              cl_git_pass(git_diff_tree_to_index(&diff, _repo, _b, NULL, &opts));
++              cl_git_pass(git_diff_tree_to_index(&diff, repo, _b, NULL, &opts));
+               break;
+       case 3: /* diff index to workdir (explicit index) */;
+               {
+                       git_index *idx;
+-                      cl_git_pass(git_repository_index(&idx, _repo));
+-                      cl_git_pass(git_diff_index_to_workdir(&diff, _repo, idx, &opts));
++                      cl_git_pass(git_repository_index(&idx, repo));
++                      cl_git_pass(git_diff_index_to_workdir(&diff, repo, idx, &opts));
+                       git_index_free(idx);
+                       break;
+               }
+@@ -132,6 +135,7 @@ static void *run_index_diffs(void *arg)
+       }
+       git_diff_free(diff);
++      git_repository_free(repo);
+       giterr_clear();
+       return arg;
+@@ -152,8 +156,10 @@ static void *run_index_diffs_with_modifier(void *arg)
+       git_diff_options opts = GIT_DIFF_OPTIONS_INIT;
+       git_diff *diff = NULL;
+       git_index *idx = NULL;
++      git_repository *repo;
+-      cl_git_pass(git_repository_index(&idx, _repo));
++      cl_git_pass(git_repository_open(&repo, git_repository_path(_repo)));
++      cl_git_pass(git_repository_index(&idx, repo));
+       /* have first thread altering the index as we go */
+       if (thread == 0) {
+@@ -176,17 +182,17 @@ static void *run_index_diffs_with_modifier(void *arg)
+       switch (thread & 0x03) {
+       case 0: /* diff index to workdir */;
+-              cl_git_pass(git_diff_index_to_workdir(&diff, _repo, idx, &opts));
++              cl_git_pass(git_diff_index_to_workdir(&diff, repo, idx, &opts));
+               break;
+       case 1: /* diff tree 'a' to index */;
+-              cl_git_pass(git_diff_tree_to_index(&diff, _repo, _a, idx, &opts));
++              cl_git_pass(git_diff_tree_to_index(&diff, repo, _a, idx, &opts));
+               break;
+       case 2: /* diff tree 'b' to index */;
+-              cl_git_pass(git_diff_tree_to_index(&diff, _repo, _b, idx, &opts));
++              cl_git_pass(git_diff_tree_to_index(&diff, repo, _b, idx, &opts));
+               break;
+       case 3: /* diff index to workdir reversed */;
+               opts.flags |= GIT_DIFF_REVERSE;
+-              cl_git_pass(git_diff_index_to_workdir(&diff, _repo, idx, &opts));
++              cl_git_pass(git_diff_index_to_workdir(&diff, repo, idx, &opts));
+               break;
+       }
+@@ -196,6 +202,7 @@ static void *run_index_diffs_with_modifier(void *arg)
+ done:
+       git_index_free(idx);
++      git_repository_free(repo);
+       giterr_clear();
+       return arg;
diff --git a/debian/patches/use-mbedtls.patch b/debian/patches/use-mbedtls.patch
new file mode 100644 (file)
index 0000000..d927ffd
--- /dev/null
@@ -0,0 +1,929 @@
+From ca3b2234dc7f1bd0d0f81488d3e29980b47a85b4 Mon Sep 17 00:00:00 2001
+From: Etienne Samson <samson.etienne@gmail.com>
+Date: Thu, 29 Mar 2018 22:13:56 +0200
+Subject: [PATCH 01/15] mbedtls: initial support
+
+---
+ cmake/Modules/FindmbedTLS.cmake |  93 +++++++++++
+ src/CMakeLists.txt              |  13 ++
+ src/features.h.in               |   1 +
+ src/settings.c                  |  11 ++
+ src/streams/mbedtls.c           | 344 ++++++++++++++++++++++++++++++++++++++++
+ src/streams/mbedtls.h           |  18 +++
+ src/streams/tls.c               |   3 +
+ 7 files changed, 483 insertions(+)
+ create mode 100644 cmake/Modules/FindmbedTLS.cmake
+ create mode 100644 src/streams/mbedtls.c
+ create mode 100644 src/streams/mbedtls.h
+
+--- /dev/null
++++ b/cmake/Modules/FindmbedTLS.cmake
+@@ -0,0 +1,93 @@
++# - Try to find mbedTLS
++# Once done this will define
++#
++# Read-Only variables
++#  MBEDTLS_FOUND - system has mbedTLS
++#  MBEDTLS_INCLUDE_DIR - the mbedTLS include directory
++#  MBEDTLS_LIBRARY_DIR - the mbedTLS library directory
++#  MBEDTLS_LIBRARIES - Link these to use mbedTLS
++#  MBEDTLS_LIBRARY - path to mbedTLS library
++#  MBEDX509_LIBRARY - path to mbedTLS X.509 library
++#  MBEDCRYPTO_LIBRARY - path to mbedTLS Crypto library
++#
++# Hint
++#  MBEDTLS_ROOT_DIR can be pointed to a local mbedTLS installation.
++
++SET(_MBEDTLS_ROOT_HINTS
++    ${MBEDTLS_ROOT_DIR}
++    ENV MBEDTLS_ROOT_DIR
++)
++
++SET(_MBEDTLS_ROOT_HINTS_AND_PATHS
++    HINTS ${_MBEDTLS_ROOT_HINTS}
++    PATHS ${_MBEDTLS_ROOT_PATHS}
++)
++
++FIND_PATH(MBEDTLS_INCLUDE_DIR
++    NAMES mbedtls/version.h
++    ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
++    PATH_SUFFIXES include
++)
++
++IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARIES)
++    # Already in cache, be silent
++    SET(MBEDTLS_FIND_QUIETLY TRUE)
++ENDIF()
++
++FIND_LIBRARY(MBEDTLS_LIBRARY
++    NAMES mbedtls libmbedtls
++    ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
++    PATH_SUFFIXES library
++)
++FIND_LIBRARY(MBEDX509_LIBRARY
++    NAMES mbedx509 libmbedx509
++    ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
++    PATH_SUFFIXES library
++)
++FIND_LIBRARY(MBEDCRYPTO_LIBRARY
++    NAMES mbedcrypto libmbedcrypto
++    ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
++    PATH_SUFFIXES library
++)
++
++IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY)
++     SET(MBEDTLS_FOUND TRUE)
++ENDIF()
++
++IF(MBEDTLS_FOUND)
++    # split mbedTLS into -L and -l linker options, so we can set them for pkg-config
++    GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_DIR ${MBEDTLS_LIBRARY} PATH)
++    GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY} NAME_WE)
++    GET_FILENAME_COMPONENT(MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY} NAME_WE)
++    GET_FILENAME_COMPONENT(MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY} NAME_WE)
++    STRING(REGEX REPLACE "^lib" "" MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY_FILE})
++    STRING(REGEX REPLACE "^lib" "" MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY_FILE})
++    STRING(REGEX REPLACE "^lib" "" MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY_FILE})
++    SET(MBEDTLS_LIBRARIES "-L${MBEDTLS_LIBRARY_DIR} -l${MBEDTLS_LIBRARY_FILE} -l${MBEDX509_LIBRARY_FILE} -l${MBEDCRYPTO_LIBRARY_FILE}")
++
++    IF(NOT MBEDTLS_FIND_QUIETLY)
++        MESSAGE(STATUS "Found mbedTLS:")
++        FILE(READ ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLSCONTENT)
++        STRING(REGEX MATCH "MBEDTLS_VERSION_STRING +\"[0-9|.]+\"" MBEDTLSMATCH ${MBEDTLSCONTENT})
++        IF (MBEDTLSMATCH)
++            STRING(REGEX REPLACE "MBEDTLS_VERSION_STRING +\"([0-9|.]+)\"" "\\1" MBEDTLS_VERSION ${MBEDTLSMATCH})
++            MESSAGE(STATUS "  version ${MBEDTLS_VERSION}")
++        ENDIF(MBEDTLSMATCH)
++        MESSAGE(STATUS "  TLS: ${MBEDTLS_LIBRARY}")
++        MESSAGE(STATUS "  X509: ${MBEDX509_LIBRARY}")
++        MESSAGE(STATUS "  Crypto: ${MBEDCRYPTO_LIBRARY}")
++    ENDIF(NOT MBEDTLS_FIND_QUIETLY)
++ELSE(MBEDTLS_FOUND)
++    IF(MBEDTLS_FIND_REQUIRED)
++        MESSAGE(FATAL_ERROR "Could not find mbedTLS")
++    ENDIF(MBEDTLS_FIND_REQUIRED)
++ENDIF(MBEDTLS_FOUND)
++
++MARK_AS_ADVANCED(
++    MBEDTLS_INCLUDE_DIR
++    MBEDTLS_LIBRARY_DIR
++    MBEDTLS_LIBRARIES
++    MBEDTLS_LIBRARY
++    MBEDX509_LIBRARY
++    MBEDCRYPTO_LIBRARY
++)
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -133,6 +133,9 @@
+ ENDIF()
+ IF (USE_HTTPS)
++      # We try to find any packages our backends might use
++      FIND_PACKAGE(OpenSSL)
++      FIND_PACKAGE(mbedTLS)
+       IF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+               FIND_PACKAGE(Security)
+               FIND_PACKAGE(CoreFoundation)
+@@ -149,8 +152,13 @@
+                       ENDIF()
+               ELSEIF (WINHTTP)
+                       SET(HTTPS_BACKEND "WinHTTP")
+-              ELSE()
++              ELSEIF(OPENSSL_FOUND)
+                       SET(HTTPS_BACKEND "OpenSSL")
++              ELSEIF(MBEDTLS_FOUND)
++                      SET(HTTPS_BACKEND "mbedTLS")
++              ELSE()
++                      MESSAGE(FATAL_ERROR "Unable to autodetect a usable HTTPS backend."
++                              "Please pass the backend name explicitly (-DUSE_HTTPS=backend)")
+               ENDIF()
+       ELSE()
+               # Backend was explicitly set
+@@ -174,8 +182,6 @@
+               LIST(APPEND LIBGIT2_LIBS ${COREFOUNDATION_LIBRARIES} ${SECURITY_LIBRARIES})
+               LIST(APPEND LIBGIT2_PC_LIBS ${COREFOUNDATION_LDFLAGS} ${SECURITY_LDFLAGS})
+       ELSEIF (HTTPS_BACKEND STREQUAL "OpenSSL")
+-              FIND_PACKAGE(OpenSSL)
+-
+               IF (NOT OPENSSL_FOUND)
+                       MESSAGE(FATAL_ERROR "Asked for OpenSSL TLS backend, but it wasn't found")
+               ENDIF()
+@@ -185,6 +191,53 @@
+               LIST(APPEND LIBGIT2_LIBS ${OPENSSL_LIBRARIES})
+               LIST(APPEND LIBGIT2_PC_LIBS ${OPENSSL_LDFLAGS})
+               LIST(APPEND LIBGIT2_PC_REQUIRES "openssl")
++      ELSEIF(HTTPS_BACKEND STREQUAL "mbedTLS")
++              IF (NOT MBEDTLS_FOUND)
++                      MESSAGE(FATAL_ERROR "Asked for mbedTLS backend, but it wasn't found")
++              ENDIF()
++
++              IF(NOT CERT_LOCATION)
++                      MESSAGE("Auto-detecting default certificates location")
++                      IF(CMAKE_SYSTEM_NAME MATCHES Darwin)
++                              # Check for an Homebrew installation
++                              SET(OPENSSL_CMD "/usr/local/opt/openssl/bin/openssl")
++                      ELSE()
++                              SET(OPENSSL_CMD "openssl")
++                      ENDIF()
++                      EXECUTE_PROCESS(COMMAND ${OPENSSL_CMD} version -d OUTPUT_VARIABLE OPENSSL_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
++                      IF(OPENSSL_DIR)
++                              STRING(REGEX REPLACE "^OPENSSLDIR: \"(.*)\"$" "\\1/" OPENSSL_DIR ${OPENSSL_DIR})
++
++                              SET(OPENSSL_CA_LOCATIONS
++                                      "ca-bundle.pem"             # OpenSUSE Leap 42.1
++                                      "cert.pem"                  # Ubuntu 14.04, FreeBSD
++                                      "certs/ca-certificates.crt" # Ubuntu 16.04
++                                      "certs/ca.pem"              # Debian 7
++                              )
++                              FOREACH(SUFFIX IN LISTS OPENSSL_CA_LOCATIONS)
++                                      SET(LOC "${OPENSSL_DIR}${SUFFIX}")
++                                      IF(NOT CERT_LOCATION AND EXISTS "${OPENSSL_DIR}${SUFFIX}")
++                                              SET(CERT_LOCATION ${LOC})
++                                      ENDIF()
++                              ENDFOREACH()
++                      ELSE()
++                              MESSAGE("Unable to find OpenSSL executable. Please provide default certificate location via CERT_LOCATION")
++                      ENDIF()
++              ENDIF()
++
++              IF(CERT_LOCATION)
++                      IF(NOT EXISTS ${CERT_LOCATION})
++                              MESSAGE(FATAL_ERROR "Cannot use CERT_LOCATION=${CERT_LOCATION} as it doesn't exist")
++                      ENDIF()
++                      ADD_FEATURE_INFO(CERT_LOCATION ON "using certificates from ${CERT_LOCATION}")
++                      ADD_DEFINITIONS(-DGIT_DEFAULT_CERT_LOCATION="${CERT_LOCATION}")
++              ENDIF()
++
++              SET(GIT_MBEDTLS 1)
++              LIST(APPEND LIBGIT2_INCLUDES ${MBEDTLS_INCLUDE_DIR})
++              LIST(APPEND LIBGIT2_LIBS ${MBEDTLS_LIBRARIES})
++              LIST(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LDFLAGS})
++              LIST(APPEND LIBGIT2_PC_REQUIRES "mbedtls")
+       ELSEIF (HTTPS_BACKEND STREQUAL "WinHTTP")
+               # WinHTTP setup was handled in the WinHTTP-specific block above
+       ELSE()
+@@ -230,6 +283,11 @@
+ ELSEIF(SHA1_BACKEND STREQUAL "CommonCrypto")
+       ADD_FEATURE_INFO(SHA ON "using CommonCrypto")
+       SET(GIT_SHA1_COMMON_CRYPTO 1)
++ELSEIF (SHA1_BACKEND STREQUAL "mbedTLS")
++      ADD_FEATURE_INFO(SHA ON "using mbedTLS")
++      SET(GIT_SHA1_MBEDTLS 1)
++      FILE(GLOB SRC_SHA1 src/hash/hash_mbedtls.c)
++      LIST(APPEND LIBGIT2_PC_REQUIRES "mbedtls")
+ ELSE()
+       MESSAGE(FATAL_ERROR "Asked for unknown SHA1 backend ${SHA1_BACKEND}")
+ ENDIF()
+--- a/src/features.h.in
++++ b/src/features.h.in
+@@ -27,10 +27,12 @@
+ #cmakedefine GIT_HTTPS 1
+ #cmakedefine GIT_OPENSSL 1
+ #cmakedefine GIT_SECURE_TRANSPORT 1
++#cmakedefine GIT_MBEDTLS 1
+ #cmakedefine GIT_SHA1_COLLISIONDETECT 1
+ #cmakedefine GIT_SHA1_WIN32 1
+ #cmakedefine GIT_SHA1_COMMON_CRYPTO 1
+ #cmakedefine GIT_SHA1_OPENSSL 1
++#cmakedefine GIT_SHA1_MBEDTLS 1
+ #endif
+--- a/src/settings.c
++++ b/src/settings.c
+@@ -11,6 +11,10 @@
+ # include <openssl/err.h>
+ #endif
++#ifdef GIT_MBEDTLS
++# include <mbedtls/error.h>
++#endif
++
+ #include <git2.h>
+ #include "sysdir.h"
+ #include "cache.h"
+@@ -20,6 +24,7 @@
+ #include "refs.h"
+ #include "transports/smart.h"
+ #include "streams/openssl.h"
++#include "streams/mbedtls.h"
+ void git_libgit2_version(int *major, int *minor, int *rev)
+ {
+@@ -175,6 +180,15 @@
+                       const char *path = va_arg(ap, const char *);
+                       error = git_openssl__set_cert_location(file, path);
+               }
++#elif defined(GIT_MBEDTLS)
++              {
++                      const char *file = va_arg(ap, const char *);
++                      const char *path = va_arg(ap, const char *);
++                      if (file)
++                              error = git_mbedtls__set_cert_location(file, 0);
++                      if (error && path)
++                              error = git_mbedtls__set_cert_location(path, 1);
++              }
+ #else
+               giterr_set(GITERR_SSL, "TLS backend doesn't support certificate locations");
+               error = -1;
+@@ -199,7 +213,7 @@
+               break;
+       case GIT_OPT_SET_SSL_CIPHERS:
+-#ifdef GIT_OPENSSL
++#if (GIT_OPENSSL || GIT_MBEDTLS)
+               {
+                       git__free(git__ssl_ciphers);
+                       git__ssl_ciphers = git__strdup(va_arg(ap, const char *));
+--- /dev/null
++++ b/src/streams/mbedtls.c
+@@ -0,0 +1,452 @@
++/*
++ * Copyright (C) the libgit2 contributors. All rights reserved.
++ *
++ * This file is part of libgit2, distributed under the GNU GPL v2 with
++ * a Linking Exception. For full terms see the included COPYING file.
++ */
++
++#include "streams/mbedtls.h"
++
++#ifdef GIT_MBEDTLS
++
++#include <ctype.h>
++
++#include "global.h"
++#include "stream.h"
++#include "streams/socket.h"
++#include "netops.h"
++#include "git2/transport.h"
++#include "util.h"
++
++#ifdef GIT_CURL
++# include "streams/curl.h"
++#endif
++
++#ifndef GIT_DEFAULT_CERT_LOCATION
++#define GIT_DEFAULT_CERT_LOCATION NULL
++#endif
++
++#include <mbedtls/config.h>
++#include <mbedtls/ssl.h>
++#include <mbedtls/error.h>
++#include <mbedtls/entropy.h>
++#include <mbedtls/ctr_drbg.h>
++
++mbedtls_ssl_config *git__ssl_conf;
++mbedtls_entropy_context *mbedtls_entropy;
++
++#define GIT_SSL_DEFAULT_CIPHERS "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-DSS-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-DSS-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-DSS-WITH-AES-128-CBC-SHA256:TLS-DHE-DSS-WITH-AES-256-CBC-SHA256:TLS-DHE-DSS-WITH-AES-128-CBC-SHA:TLS-DHE-DSS-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-AES-128-GCM-SHA256:TLS-RSA-WITH-AES-256-GCM-SHA384:TLS-RSA-WITH-AES-128-CBC-SHA256:TLS-RSA-WITH-AES-256-CBC-SHA256:TLS-RSA-WITH-AES-128-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA"
++#define GIT_SSL_DEFAULT_CIPHERS_COUNT 30
++
++/**
++ * This function aims to clean-up the SSL context which
++ * we allocated.
++ */
++static void shutdown_ssl(void)
++{
++      if (git__ssl_conf) {
++              mbedtls_x509_crt_free(git__ssl_conf->ca_chain);
++              git__free(git__ssl_conf->ca_chain);
++              mbedtls_ctr_drbg_free(git__ssl_conf->p_rng);
++              git__free(git__ssl_conf->p_rng);
++              mbedtls_ssl_config_free(git__ssl_conf);
++              git__free(git__ssl_conf);
++              git__ssl_conf = NULL;
++      }
++      if (mbedtls_entropy) {
++              mbedtls_entropy_free(mbedtls_entropy);
++              git__free(mbedtls_entropy);
++              mbedtls_entropy = NULL;
++      }
++}
++
++int git_mbedtls__set_cert_location(const char *path, int is_dir);
++
++int git_mbedtls_stream_global_init(void)
++{
++      int loaded = 0;
++      char *crtpath = GIT_DEFAULT_CERT_LOCATION;
++      struct stat statbuf;
++      mbedtls_ctr_drbg_context *ctr_drbg = NULL;
++
++      int *ciphers_list = NULL;
++      int ciphers_known = 0;
++      char *cipher_name = NULL;
++      char *cipher_string = NULL;
++      char *cipher_string_tmp = NULL;
++
++      mbedtls_x509_crt *cacert = NULL;
++
++      git__ssl_conf = git__malloc(sizeof(mbedtls_ssl_config));
++      mbedtls_ssl_config_init(git__ssl_conf);
++      if (mbedtls_ssl_config_defaults(git__ssl_conf,
++                                          MBEDTLS_SSL_IS_CLIENT,
++                                          MBEDTLS_SSL_TRANSPORT_STREAM,
++                                          MBEDTLS_SSL_PRESET_DEFAULT) != 0) {
++              giterr_set(GITERR_SSL, "failed to initialize mbedTLS");
++              goto cleanup;
++      }
++
++      /* configure TLSv1 */
++      mbedtls_ssl_conf_min_version(git__ssl_conf, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0);
++
++      /* verify_server_cert is responsible for making the check.
++       * OPTIONAL because REQUIRED drops the certificate as soon as the check
++       * is made, so we can never see the certificate and override it. */
++      mbedtls_ssl_conf_authmode(git__ssl_conf, MBEDTLS_SSL_VERIFY_OPTIONAL);
++
++      /* set the list of allowed ciphersuites */
++      ciphers_list = calloc(GIT_SSL_DEFAULT_CIPHERS_COUNT, sizeof(int));
++      ciphers_known = 0;
++      cipher_string = cipher_string_tmp = git__strdup(GIT_SSL_DEFAULT_CIPHERS);
++      while ((cipher_name = git__strtok(&cipher_string_tmp, ":")) != NULL) {
++              int cipherid = mbedtls_ssl_get_ciphersuite_id(cipher_name);
++              if (cipherid == 0) continue;
++
++              ciphers_list[ciphers_known++] = cipherid;
++      }
++      git__free(cipher_string);
++
++      if (!ciphers_known) {
++              giterr_set(GITERR_SSL, "no cipher could be enabled");
++              goto cleanup;
++      }
++      mbedtls_ssl_conf_ciphersuites(git__ssl_conf, ciphers_list);
++
++      /* Seeding the random number generator */
++      mbedtls_entropy = git__malloc(sizeof(mbedtls_entropy_context));
++      mbedtls_entropy_init(mbedtls_entropy);
++
++      ctr_drbg = git__malloc(sizeof(mbedtls_ctr_drbg_context));
++      mbedtls_ctr_drbg_init(ctr_drbg);
++      if (mbedtls_ctr_drbg_seed(ctr_drbg,
++                                    mbedtls_entropy_func,
++                                    mbedtls_entropy, NULL, 0) != 0) {
++              giterr_set(GITERR_SSL, "failed to initialize mbedTLS entropy pool");
++              goto cleanup;
++      }
++
++      mbedtls_ssl_conf_rng(git__ssl_conf, mbedtls_ctr_drbg_random, ctr_drbg);
++
++      /* load default certificates */
++      if (crtpath != NULL && stat(crtpath, &statbuf) == 0 && S_ISREG(statbuf.st_mode))
++              loaded = (git_mbedtls__set_cert_location(crtpath, 0) == 0);
++      if (!loaded && crtpath != NULL && stat(crtpath, &statbuf) == 0 && S_ISDIR(statbuf.st_mode))
++              loaded = (git_mbedtls__set_cert_location(crtpath, 1) == 0);
++
++      git__on_shutdown(shutdown_ssl);
++
++      return 0;
++
++cleanup:
++      mbedtls_x509_crt_free(cacert);
++      git__free(cacert);
++      mbedtls_ctr_drbg_free(ctr_drbg);
++      git__free(ctr_drbg);
++      mbedtls_ssl_config_free(git__ssl_conf);
++      git__free(git__ssl_conf);
++      git__ssl_conf = NULL;
++
++      return -1;
++}
++
++mbedtls_ssl_config *git__ssl_conf;
++
++static int bio_read(void *b, unsigned char *buf, size_t len)
++{
++      git_stream *io = (git_stream *) b;
++      return (int) git_stream_read(io, buf, len);
++}
++
++static int bio_write(void *b, const unsigned char *buf, size_t len)
++{
++      git_stream *io = (git_stream *) b;
++      return (int) git_stream_write(io, (const char *)buf, len, 0);
++}
++
++static int ssl_set_error(mbedtls_ssl_context *ssl, int error)
++{
++      char errbuf[512];
++      int ret = -1;
++
++      assert(error != MBEDTLS_ERR_SSL_WANT_READ);
++      assert(error != MBEDTLS_ERR_SSL_WANT_WRITE);
++
++      if (error != 0)
++              mbedtls_strerror( error, errbuf, 512 );
++
++      switch(error) {
++              case 0:
++              giterr_set(GITERR_SSL, "SSL error: unknown error");
++              break;
++
++      case MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:
++              giterr_set(GITERR_SSL, "SSL error: %#04x [%x] - %s", error, ssl->session_negotiate->verify_result, errbuf);
++              ret = GIT_ECERTIFICATE;
++              break;
++
++      default:
++              giterr_set(GITERR_SSL, "SSL error: %#04x - %s", error, errbuf);
++      }
++
++      return ret;
++}
++
++static int ssl_teardown(mbedtls_ssl_context *ssl)
++{
++      int ret = 0;
++
++      ret = mbedtls_ssl_close_notify(ssl);
++      if (ret < 0)
++              ret = ssl_set_error(ssl, ret);
++
++      mbedtls_ssl_free(ssl);
++      return ret;
++}
++
++static int verify_server_cert(mbedtls_ssl_context *ssl)
++{
++      int ret = -1;
++
++      if ((ret = mbedtls_ssl_get_verify_result(ssl)) != 0) {
++              char vrfy_buf[512];
++              int len = mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), "", ret);
++              if (len >= 1) vrfy_buf[len - 1] = '\0'; /* Remove trailing \n */
++              giterr_set(GITERR_SSL, "the SSL certificate is invalid: %#04x - %s", ret, vrfy_buf);
++              return GIT_ECERTIFICATE;
++      }
++
++      return 0;
++}
++
++typedef struct {
++      git_stream parent;
++      git_stream *io;
++      bool connected;
++      char *host;
++      mbedtls_ssl_context *ssl;
++      git_cert_x509 cert_info;
++} mbedtls_stream;
++
++
++int mbedtls_connect(git_stream *stream)
++{
++      int ret;
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++
++      if ((ret = git_stream_connect(st->io)) < 0)
++              return ret;
++
++      st->connected = true;
++
++      mbedtls_ssl_set_hostname(st->ssl, st->host);
++
++      mbedtls_ssl_set_bio(st->ssl, st->io, bio_write, bio_read, NULL);
++
++      if ((ret = mbedtls_ssl_handshake(st->ssl)) != 0)
++              return ssl_set_error(st->ssl, ret);
++
++      return verify_server_cert(st->ssl);
++}
++
++int mbedtls_certificate(git_cert **out, git_stream *stream)
++{
++      unsigned char *encoded_cert;
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++
++      const mbedtls_x509_crt *cert = mbedtls_ssl_get_peer_cert(st->ssl);
++      if (!cert) {
++              giterr_set(GITERR_SSL, "the server did not provide a certificate");
++              return -1;
++      }
++
++      /* Retrieve the length of the certificate first */
++      if (cert->raw.len == 0) {
++              giterr_set(GITERR_NET, "failed to retrieve certificate information");
++              return -1;
++      }
++
++      encoded_cert = git__malloc(cert->raw.len);
++      GITERR_CHECK_ALLOC(encoded_cert);
++      memcpy(encoded_cert, cert->raw.p, cert->raw.len);
++
++      st->cert_info.parent.cert_type = GIT_CERT_X509;
++      st->cert_info.data = encoded_cert;
++      st->cert_info.len = cert->raw.len;
++
++      *out = &st->cert_info.parent;
++
++      return 0;
++}
++
++static int mbedtls_set_proxy(git_stream *stream, const git_proxy_options *proxy_options)
++{
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++
++      return git_stream_set_proxy(st->io, proxy_options);
++}
++
++ssize_t mbedtls_stream_write(git_stream *stream, const char *data, size_t len, int flags)
++{
++      size_t read = 0;
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++
++      GIT_UNUSED(flags);
++
++      do {
++              int error = mbedtls_ssl_write(st->ssl, (const unsigned char *)data + read, len - read);
++              if (error <= 0) {
++                      return ssl_set_error(st->ssl, error);
++              }
++              read += error;
++      } while (read < len);
++
++      return read;
++}
++
++ssize_t mbedtls_stream_read(git_stream *stream, void *data, size_t len)
++{
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++      int ret;
++
++      if ((ret = mbedtls_ssl_read(st->ssl, (unsigned char *)data, len)) <= 0)
++              ssl_set_error(st->ssl, ret);
++
++      return ret;
++}
++
++int mbedtls_stream_close(git_stream *stream)
++{
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++      int ret = 0;
++
++      if (st->connected && (ret = ssl_teardown(st->ssl)) != 0)
++              return -1;
++
++      st->connected = false;
++
++      return git_stream_close(st->io);
++}
++
++void mbedtls_stream_free(git_stream *stream)
++{
++      mbedtls_stream *st = (mbedtls_stream *) stream;
++
++      git__free(st->host);
++      git__free(st->cert_info.data);
++      git_stream_free(st->io);
++      git__free(st->ssl);
++      git__free(st);
++}
++
++int git_mbedtls_stream_new(git_stream **out, const char *host, const char *port)
++{
++      int error;
++      mbedtls_stream *st;
++
++      st = git__calloc(1, sizeof(mbedtls_stream));
++      GITERR_CHECK_ALLOC(st);
++
++#ifdef GIT_CURL
++      error = git_curl_stream_new(&st->io, host, port);
++#else
++      error = git_socket_stream_new(&st->io, host, port);
++#endif
++
++      if (error < 0)
++              goto out_err;
++
++      st->ssl = git__malloc(sizeof(mbedtls_ssl_context));
++      GITERR_CHECK_ALLOC(st->ssl);
++      mbedtls_ssl_init(st->ssl);
++      if (mbedtls_ssl_setup(st->ssl, git__ssl_conf)) {
++              giterr_set(GITERR_SSL, "failed to create ssl object");
++              error = -1;
++              goto out_err;
++      }
++
++      st->host = git__strdup(host);
++      GITERR_CHECK_ALLOC(st->host);
++
++      st->parent.version = GIT_STREAM_VERSION;
++      st->parent.encrypted = 1;
++      st->parent.proxy_support = git_stream_supports_proxy(st->io);
++      st->parent.connect = mbedtls_connect;
++      st->parent.certificate = mbedtls_certificate;
++      st->parent.set_proxy = mbedtls_set_proxy;
++      st->parent.read = mbedtls_stream_read;
++      st->parent.write = mbedtls_stream_write;
++      st->parent.close = mbedtls_stream_close;
++      st->parent.free = mbedtls_stream_free;
++
++      *out = (git_stream *) st;
++      return 0;
++
++out_err:
++      mbedtls_ssl_free(st->ssl);
++      git_stream_free(st->io);
++      git__free(st);
++
++      return error;
++}
++
++int git_mbedtls__set_cert_location(const char *path, int is_dir)
++{
++      int ret = 0;
++      char errbuf[512];
++      mbedtls_x509_crt *cacert;
++
++      assert(path != NULL);
++
++      cacert = git__malloc(sizeof(mbedtls_x509_crt));
++      mbedtls_x509_crt_init(cacert);
++      if (is_dir) {
++              ret = mbedtls_x509_crt_parse_path(cacert, path);
++      } else {
++              ret = mbedtls_x509_crt_parse_file(cacert, path);
++      }
++      /* mbedtls_x509_crt_parse_path returns the number of invalid certs on success */
++      if (ret < 0) {
++              mbedtls_x509_crt_free(cacert);
++              git__free(cacert);
++              mbedtls_strerror( ret, errbuf, 512 );
++              giterr_set(GITERR_SSL, "failed to load CA certificates: %#04x - %s", ret, errbuf);
++              return -1;
++      }
++
++      mbedtls_x509_crt_free(git__ssl_conf->ca_chain);
++      git__free(git__ssl_conf->ca_chain);
++      mbedtls_ssl_conf_ca_chain(git__ssl_conf, cacert, NULL);
++
++      return 0;
++}
++
++#else
++
++#include "stream.h"
++
++int git_mbedtls_stream_global_init(void)
++{
++      return 0;
++}
++
++int git_mbedtls_stream_new(git_stream **out, const char *host, const char *port)
++{
++      GIT_UNUSED(out);
++      GIT_UNUSED(host);
++      GIT_UNUSED(port);
++
++      giterr_set(GITERR_SSL, "mbedTLS is not supported in this version");
++      return -1;
++}
++
++int git_mbedtls__set_cert_location(const char *path, int is_dir)
++{
++      GIT_UNUSED(path);
++      GIT_UNUSED(is_dir);
++
++      giterr_set(GITERR_SSL, "mbedTLS is not supported in this version");
++      return -1;
++}
++
++#endif
+--- /dev/null
++++ b/src/streams/mbedtls.h
+@@ -0,0 +1,20 @@
++/*
++ * Copyright (C) the libgit2 contributors. All rights reserved.
++ *
++ * This file is part of libgit2, distributed under the GNU GPL v2 with
++ * a Linking Exception. For full terms see the included COPYING file.
++ */
++#ifndef INCLUDE_steams_mbedtls_h__
++#define INCLUDE_steams_mbedtls_h__
++
++#include "common.h"
++
++#include "git2/sys/stream.h"
++
++extern int git_mbedtls_stream_global_init(void);
++
++extern int git_mbedtls_stream_new(git_stream **out, const char *host, const char *port);
++
++extern int git_mbedtls__set_cert_location(const char *path, int is_dir);
++
++#endif
+--- a/src/streams/tls.c
++++ b/src/streams/tls.c
+@@ -9,6 +9,7 @@
+ #include "git2/errors.h"
++#include "streams/mbedtls.h"
+ #include "streams/openssl.h"
+ #include "streams/stransport.h"
+@@ -31,6 +32,8 @@
+       return git_stransport_stream_new(out, host, port);
+ #elif defined(GIT_OPENSSL)
+       return git_openssl_stream_new(out, host, port);
++#elif defined(GIT_MBEDTLS)
++      return git_mbedtls_stream_new(out, host, port);
+ #else
+       GIT_UNUSED(out);
+       GIT_UNUSED(host);
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -48,7 +48,7 @@
+ OPTION( ENABLE_TRACE          "Enables tracing support"                               OFF )
+ OPTION( LIBGIT2_FILENAME      "Name of the produced binary"                   OFF )
+-SET(SHA1_BACKEND "CollisionDetection" CACHE STRING "Backend to use for SHA1. One of Generic, OpenSSL, Win32, CommonCrypto, CollisionDetection. ")
++SET(SHA1_BACKEND "CollisionDetection" CACHE STRING "Backend to use for SHA1. One of Generic, OpenSSL, Win32, CommonCrypto, mbedTLS, CollisionDetection. ")
+ OPTION( USE_SSH                               "Link with libssh to enable SSH support" ON )
+ OPTION( USE_HTTPS                     "Enable HTTPS support. Can be set to a specific backend"        ON )
+ OPTION( USE_GSSAPI                    "Link with libgssapi for SPNEGO auth"   OFF )
+--- a/src/hash.h
++++ b/src/hash.h
+@@ -26,6 +26,8 @@
+ # include "hash/hash_openssl.h"
+ #elif defined(GIT_SHA1_WIN32)
+ # include "hash/hash_win32.h"
++#elif defined(GIT_SHA1_MBEDTLS)
++# include "hash/hash_mbedtls.h"
+ #else
+ # include "hash/hash_generic.h"
+ #endif
+--- /dev/null
++++ b/src/hash/hash_mbedtls.c
+@@ -0,0 +1,38 @@
++/*
++ * Copyright (C) the libgit2 contributors. All rights reserved.
++ *
++ * This file is part of libgit2, distributed under the GNU GPL v2 with
++ * a Linking Exception. For full terms see the included COPYING file.
++ */
++
++#include "common.h"
++#include "hash.h"
++#include "hash/hash_mbedtls.h"
++
++void git_hash_ctx_cleanup(git_hash_ctx *ctx)
++{
++    assert(ctx);
++    mbedtls_sha1_free(&ctx->c);
++}
++
++int git_hash_init(git_hash_ctx *ctx)
++{
++    assert(ctx);
++    mbedtls_sha1_init(&ctx->c);
++    mbedtls_sha1_starts(&ctx->c);
++    return 0;
++}
++
++int git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
++{
++    assert(ctx);
++    mbedtls_sha1_update(&ctx->c, data, len);
++    return 0;
++}
++
++int git_hash_final(git_oid *out, git_hash_ctx *ctx)
++{
++    assert(ctx);
++    mbedtls_sha1_finish(&ctx->c, out->id);
++    return 0;
++}
+--- /dev/null
++++ b/src/hash/hash_mbedtls.h
+@@ -0,0 +1,20 @@
++/*
++ * Copyright (C) the libgit2 contributors. All rights reserved.
++ *
++ * This file is part of libgit2, distributed under the GNU GPL v2 with
++ * a Linking Exception. For full terms see the included COPYING file.
++ */
++
++#ifndef INCLUDE_hash_mbedtld_h__
++#define INCLUDE_hash_mbedtld_h__
++
++#include <mbedtls/sha1.h>
++
++struct git_hash_ctx {
++    mbedtls_sha1_context c;
++};
++
++#define git_hash_global_init() 0
++#define git_hash_ctx_init(ctx) git_hash_init(ctx)
++
++#endif /* INCLUDE_hash_mbedtld_h__ */
+--- a/src/global.c
++++ b/src/global.c
+@@ -12,6 +12,7 @@
+ #include "filter.h"
+ #include "merge_driver.h"
+ #include "streams/curl.h"
++#include "streams/mbedtls.h"
+ #include "streams/openssl.h"
+ #include "thread-utils.h"
+ #include "git2/global.h"
+@@ -65,7 +66,8 @@
+               (ret = git_merge_driver_global_init()) == 0 &&
+               (ret = git_transport_ssh_global_init()) == 0 &&
+               (ret = git_openssl_stream_global_init()) == 0 &&
+-              (ret = git_curl_stream_global_init()) == 0)
++              (ret = git_curl_stream_global_init()) == 0 &&
++              (ret = git_mbedtls_stream_global_init()) == 0)
+               ret = git_mwindow_global_init();
+       GIT_MEMORY_BARRIER;
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -55,6 +55,16 @@
+          OPTIONS="-DBUILD_CLAR=ON -DBUILD_EXAMPLES=OFF -DDEBUG_POOL=ON -DCMAKE_BUILD_TYPE=Debug"
+      os: linux
+      dist: trusty
++   - compiler: gcc
++     env:
++         MBEDTLS=1
++         OPTIONS="-DTHREADSAFE=ON -DCMAKE_BUILD_TYPE=Release -DUSE_HTTPS=mbedTLS -DMBEDTLS_ROOT_DIR=../deps/mbedtls"
++     os: linux
++   - compiler: gcc
++     env:
++         MBEDTLS=1
++         OPTIONS="-DTHREADSAFE=OFF -DBUILD_EXAMPLES=ON -DUSE_HTTPS=mbedTLS -DMBEDTLS_ROOT_DIR=../deps/mbedtls"
++     os: linux
+  allow_failures:
+    - env: COVERITY=1
+--- /dev/null
++++ b/script/install-deps-linux.sh
+@@ -0,0 +1,13 @@
++#!/bin/sh
++
++set -x
++
++if [ "$MBEDTLS" ]; then
++  git clone --depth 10 --single-branch --branch mbedtls-2.6.1 https://github.com/ARMmbed/mbedtls.git ./deps/mbedtls
++  cd ./deps/mbedtls
++  # We pass -fPIC explicitely because we'll include it in libgit2.so
++  CFLAGS=-fPIC cmake -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON .
++  cmake --build .
++
++  echo "mbedTLS built in `pwd`"
++fi
+--- a/tests/core/stream.c
++++ b/tests/core/stream.c
+@@ -33,9 +33,8 @@
+       cl_git_pass(git_stream_register_tls(NULL));
+       error = git_tls_stream_new(&stream, "localhost", "443");
+-      /* We don't have arbitrary TLS stream support on Windows
+-       * or when openssl support is disabled (except on OSX
+-       * with Security framework).
++      /* We don't have TLS support enabled, or we're on Windows,
++       * which has no arbitrary TLS stream support.
+        */
+ #if defined(GIT_WIN32) || !defined(GIT_HTTPS)
+       cl_git_fail_with(-1, error);
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..523fc1d
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# This rules file has 2 streams, the build-debian-devel stream builds
+# the static library and the bulid-debian-release builds the dynamic
+# library.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+TEST_TMPDIR := $(CURDIR)/tmp-test
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
+
+override_dh_auto_configure:
+       dh_auto_configure --builddirectory=build-debian-release -- \
+               -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
+               -DUSE_OPENSSL:BOOL=OFF \
+               -DUSE_CURL_SSL:BOOL=ON \
+               -DUSE_GSSAPI:BOOL=ON \
+               -DTHREADSAFE:BOOL=ON \
+               -DBUILD_CLAR:BOOL=ON \
+               -DLIB_INSTALL_DIR:STRING=lib/$(DEB_HOST_MULTIARCH)
+
+       dh_auto_configure --builddirectory=build-debian-devel -- \
+               -DCMAKE_BUILD_TYPE:STRING=Release \
+               -DTHREADSAFE:BOOL=ON \
+               -DUSE_HTTPS=mbedTLS \
+               -DUSE_CURL_SSL:BOOL=ON \
+               -DUSE_GSSAPI:BOOL=ON \
+               -DBUILD_CLAR:BOOL=OFF \
+               -DBUILD_SHARED_LIBS:BOOL=OFF \
+               -DLIB_INSTALL_DIR:STRING=lib/$(DEB_HOST_MULTIARCH)
+
+
+override_dh_makeshlibs:
+       dh_makeshlibs -V
+
+override_dh_auto_build:
+       dh_auto_build --builddirectory=build-debian-release
+       dh_auto_build --builddirectory=build-debian-devel
+
+override_dh_auto_install:
+       dh_auto_install --builddirectory=build-debian-release
+       dh_auto_install --builddirectory=build-debian-devel
+
+override_dh_auto_test:
+       mkdir -p build-debian-release/tmp
+       dh_auto_test --builddirectory=build-debian-release
+       mkdir -p build-debian-devel/tmp
+       dh_auto_test --builddirectory=build-debian-devel
+
+override_dh_strip:
+       dh_strip --dbgsym-migration='libgit2-dbg (<< 0.26.0+dfsg.1-1~)'
+
+override_dh_installexamples:
+       dh_installexamples --exclude .gitignore
+
+%:
+       dh $@ --buildsystem cmake --dbgsym-migration='libgit2-dbg (<< 0.26.0+dfsg.1-1~)' --builddirectory=build-debian-release
+       dh $@ --buildsystem cmake --builddirectory=build-debian-devel
diff --git a/debian/source/format b/debian/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644 (file)
index 0000000..b8617f6
--- /dev/null
@@ -0,0 +1 @@
+libgit2: debian-watch-does-not-check-gpg-signature
diff --git a/debian/tests/CMakeLists.txt b/debian/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..24e8efe
--- /dev/null
@@ -0,0 +1,30 @@
+CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
+PROJECT (libgit2_test)
+ADD_EXECUTABLE (libgit2_test libgit2_test.c)
+
+FIND_PACKAGE(PkgConfig)
+
+PKG_CHECK_MODULES(PC_LIBGIT2 libgit2)
+
+SET(LIBGIT2_DEFINITIONS ${PC_LIBGIT_CFLAGS_OTHER})
+
+FIND_PATH(LIBGIT2_INCLUDE_DIR git2.h
+          HINTS ${PC_LIBGIT_INCLUDEDIR} ${PC_LIBGIT_INCLUDE_DIRS}
+          PATH_SUFFIXES libgit2 )
+
+FIND_LIBRARY(LIBGIT2_LIBRARY NAMES git2 libgit2
+             HINTS ${PC_LIBGIT_LIBDIR} ${PC_LIBGIT_LIBRARY_DIRS} )
+
+SET(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARY} )
+SET(LIBGIT2_INCLUDE_DIRS ${LIBGIT2_INCLUDE_DIR} )
+
+INCLUDE(FindPackageHandleStandardArgs)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibGit2  DEFAULT_MSG
+                                  LIBGIT2_LIBRARY LIBGIT2_INCLUDE_DIR)
+
+
+mark_as_advanced(LIBGIT2_INCLUDE_DIR LIBGIT2_LIBRARY )
+include_directories(${LIBGIT2_INCLUDE_DIR})
+target_link_libraries (libgit2_test ${LIBGIT2_LIBRARY})
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644 (file)
index 0000000..241da9a
--- /dev/null
@@ -0,0 +1,2 @@
+Test-Command: cmake debian/tests;make;./libgit2_test
+Depends: @, cmake, gcc, g++
diff --git a/debian/tests/libgit2_test.c b/debian/tests/libgit2_test.c
new file mode 100644 (file)
index 0000000..18b37e6
--- /dev/null
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <git2.h>
+
+int main (int argc, char** argv)
+{
+  int major = 0;
+  int minor = 0;
+  int rev = 0;
+  git_libgit2_version(&major, &minor, &rev);
+  printf("Version %d.%d.%d\n", major, minor, rev);
+  return 0;
+};
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..9e850b3
--- /dev/null
@@ -0,0 +1,3 @@
+version=3
+opts=compression=xz,repack,filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/libgit2-$1\.tar\.gz/,dversionmangle=s/\+dfsg\d*$//,repacksuffix=+dfsg.1 \
+  https://github.com/libgit2/libgit2/releases .*/v?([\d.]*)\.tar\.gz