This is release v1.2.0, "Absacker". This release includes many new features: in particular, support for commit graphs, multi-pack indexes, and core.longpaths
support.
This is meant to be the final minor release in the v1 lineage. v2.0 will be the next major release and will remove deprecated APIs and may include breaking changes.
New features
- winhttp: support optional client cert by @ianhattendorf in #5384
- Add support for additional SSH hostkey types. by @arroz in #5750
- Handle ipv6 addresses by @ethomson in #5741
- zlib: Add support for building with Chromium's zlib implementation by @lhchavez in #5748
- commit-graph: Introduce a parser for commit-graph files by @lhchavez in #5762
- patch: add owner accessor by @KOLANICH in #5731
- commit-graph: Support lookups of entries in a commit-graph by @lhchavez in #5763
- commit-graph: Introduce
git_commit_graph_needs_refresh()
by @lhchavez in #5764 - Working directory path validation by @ethomson in #5823
- Support
core.longpaths
on Windows by @ethomson in #5857 - git_reference_create_matching: Treat all-zero OID as "must be absent" by @novalis in #5842
- diff:add option to ignore blank line changes by @yuuri in #5853
- [Submodule] Git submodule dup by @lolgear in #5890
- commit-graph: Use the commit-graph in revwalks by @lhchavez in #5765
- commit-graph: Introduce
git_commit_list_generation_cmp
by @lhchavez in #5766 - graph: Create
git_graph_reachable_from_any()
by @lhchavez in #5767 - Support reading attributes from a specific commit by @ethomson in #5952
- [Branch] Branch upstream with format by @lolgear in #5861
- Dynamically load OpenSSL (optionally) by @ethomson in #5974
- Set refs/remotes/origin/HEAD to default branch when branch is specified by @A-Ovchinnikov-mx in #6010
- midx: Add a way to write multi-pack-index files by @lhchavez in #5404
- Use error code GIT_EAUTH for authentication failures by @josharian in #5395
- midx: Introduce git_odb_write_multi_pack_index() by @lhchavez in #5405
- Checkout dry-run by @J0Nes90 in #5841
- mbedTLS: Fix setting certificate directory by @mikezackles in #6004
- remote: introduce remote_ready_cb, deprecate resolve_url callback by @ethomson in #6012
- Introduce
create_commit_cb
, deprecatesigning_cb
by @ethomson in #6016 - commit-graph: Add a way to write commit-graph files by @lhchavez in #5778
- Add NO_PROXY env support by @sathieu in #5796
- Update proxy configuration by @ethomson in #6026
Bug fixes
- Define
git___load
when building with-DTHREADSAFE=OFF
by @lhchavez in #5664 - Make the Windows leak detection more robust by @lhchavez in #5661
- Refactor "global" state by @ethomson in #5546
- threadstate: rename tlsdata when building w/o threads by @ethomson in #5668
- Include
${MBEDTLS_INCLUDE_DIR}
when compilingcrypt_mbedtls.c
by @staticfloat in #5685 - Fix the
-DTHREADSAFE=OFF
build by @lhchavez in #5690 - Add missing worktree_dir check and test case by @rbmclean in #5692
- msvc crtdbg -> win32 leakcheck by @ethomson in #5580
- Introduce GIT_ASSERT macros by @ethomson in #5327
- Also add the raw hostkey to
git_cert_hostkey
by @lhchavez in #5704 - Make the odb race-free by @lhchavez in #5595
- Make the pack and mwindow implementations data-race-free by @lhchavez in #5593
- Thread-free implementation by @ethomson in #5719
- Thread-local storage: a generic internal library (with no allocations) by @ethomson in #5720
- Friendlier getting started in the lack of git_libgit2_init by @ethomson in #5578
- Make git__strntol64() ~70%* faster by @lhchavez in #5735
- Cache the parsed submodule config when diffing by @lhchavez in #5727
- pack: continue zlib while we can make progress by @ethomson in #5740
- Avoid using
__builtin_mul_overflow
with the clang+32-bit combo by @lhchavez in #5742 - repository: use intptr_t's in the config map cache by @ethomson in #5746
- Build with NO_MMAP by @0xdky in #5583
- Add documentation for git_blob_filter_options.version by @JoshuaS3 in #5759
- blob: fix name of
GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD
by @ethomson in #5760 - Cope with empty default branch by @ethomson in #5770
- README: instructions for using libgit2 without compiling by @ethomson in #5772
- Use
p_pwrite
/p_pread
consistently throughout the codebase by @lhchavez in #5769 - midx: Fix a bug in
git_midx_needs_refresh()
by @lhchavez in #5768 - mwindow: Fix a bug in the LRU window finding code by @lhchavez in #5783
- refdb_fs: Check git_sortedcache wlock/rlock errors by @mamapanda in #5800
- index: Check git_vector_dup error in write_entries by @mamapanda in #5801
- Fix documentation formating on repository.h by @punkymaniac in #5806
- include: fix typos in comments by @tniessen in #5805
- Fix some typos by @aaronfranke in #5797
- Check git_signature_dup failure by @mamapanda in #5817
- merge: Check insert_head_ids error in create_virtual_base by @mamapanda in #5818
- winhttp: skip certificate check if unable to send request by @ianhattendorf in #5814
- Default to GIT_BRANCH_DEFAULT if init.defaultBranch is empty string by @ianhattendorf in #5832
- Fix diff_entrycount -> diff_num_deltas doc typo by @mjsir911 in #5838
- repo: specify init.defaultbranch is meant to be a branch name by @carlosmn in #5835
- repo: remove an inappropriate use of PASSTHROUGH by @carlosmn in #5834
- src: fix typos in header files by @tniessen in #5843
- test: clean up memory leaks by @ethomson in #5858
- buf: remove unnecessary buf_text namespace by @ethomson in #5860
- Fix bug in git_diff_find_similar. by @staktrace in #5839
- Fix issues with Proxy Authentication after httpclient refactor by @implausible in #5852
- tests: clean up memory leak, fail on leak for win32 by @ethomson in #5892
- Tolerate readlink size less than st_size by @dtolnay in #5900
- Define WINHTTP_NO_CLIENT_CERT_CONTEXT if needed by @jacquesg in #5929
- Update from regex to pcre licensing information in docs/contributing.md by @boretrk in #5916
- Consider files executable only if the user can execute them by @novalis in #5915
- git__timer: Limit ITimer usage to AmigaOS4 by @boretrk in #5936
- Fix memory leak in git_smart__connect by @punkymaniac in #5908
- config: fix included configs not refreshed more than once by @Batchyx in #5926
- Fix wrong time_t used in function by @NattyNarwhal in #5938
- fix check for ignoring of negate rules by @palmin in #5824
- Make
FIND_PACKAGE(PythonInterp)
preferpython3
by @lhchavez in #5913 - git__timer: Allow compilation on systems without CLOCK_MONOTONIC by @boretrk in #5945
- stdintification: use int64_t and INT64_C instead of long long by @NattyNarwhal in #5941
- Optional stricter allocation checking (for
malloc(0)
cases) by @ethomson in #5951 - Variadic arguments aren't in C89 by @NattyNarwhal in #5948
- Fix typo in general.c by @Crayon2000 in #5954
- common.h: use inline when compiling for C99 and later by @boretrk in #5953
- Fix one memory leak in master by @lhchavez in #5957
- tests: reset odb backend priority by @ethomson in #5961
- cmake: extended futimens checking on macOS by @ethomson in #5962
- amiga: use ';' as path list separator on AmigaOS by @boretrk in #5978
- Respect the force flag on refspecs in git_remote_fetch by @alexjg in #5854
- Fix LIBGIT2_FILENAME not being passed to the resource compiler by @jairbubbles in #5994
- sha1dc: remove conditional for <sys/types.h> by @boretrk in #5997
- openssl: don't fail when we can't customize allocators by @ethomson in #5999
- C11 warnings by @boretrk in #6005
- open: input validation for empty segments in path by @boretrk in #5950
- Introduce GIT_WARN_UNUSED_RESULT by @lhchavez in #5802
- GCC C11 warnings by @boretrk in #6006
- array: check dereference from void * type by @boretrk in #6007
- Homogenize semantics for atomic-related functions by @lhchavez in #5747
- git_array_alloc: return objects of correct type by @boretrk in #6008
- CMake. hash sha1 header has been added. by @lolgear in #6013
- tests: change comments to c89 style by @boretrk in #6015
- Set Host Header to match CONNECT authority target by @lollipopman in #6022
- Fix worktree iteration when repository has no common directory by @kcsaul in #5943
Deprecated APIs
- revspec: rename git_revparse_mode_t to git_revspec_t by @ethomson in #5786
- tree: deprecate
git_treebuilder_write_with_buffer
by @ethomson in #5815 - Deprecate
is_valid_name
functions; replace withname_is_valid
functions by @ethomson in #5659 - filter: stop taking git_buf as user input by @ethomson in #5859
- remote: introduce remote_ready_cb, deprecate resolve_url callback by @ethomson in #6012
- Introduce
create_commit_cb
, deprecatesigning_cb
by @ethomson in #6016 - filter: filter drivers stop taking git_buf as user input by @ethomson in #6011
- buf: deprecate public git_buf writing functions by @ethomson in #6017
Documentation improvements
- Update README.md for additional Delphi bindings by @todaysoftware in #5831
- Fix documentation formatting by @punkymaniac in #5850
- docs: fix incorrect comment marker by @tiennou in #5897
- Patch documentation by @punkymaniac in #5903
- Fix misleading doc for
git_index_find
by @arxanas in #5910 - docs: stop mentioning libgit2's "master" branch by @Batchyx in #5925
- docs: fix some missing includes that cause Docurium to error out by @tiennou in #5917
- Patch documentation by @punkymaniac in #5940
Development improvements
CI Improvements
- Add a ThreadSanitizer build by @lhchavez in #5597
- ci: more GitHub Actions by @ethomson in #5706
- ci: run coverity in the nightly builds by @ethomson in #5707
- ci: only report main branch in README status by @ethomson in #5708
- Fix the
ENABLE_WERROR=ON
build in Groovy Gorilla (gcc 10.2) by @lhchavez in #5715 - Re-enable the RC4 test by @carlosmn in #4418
- ci: run codeql by @ethomson in #5709
- github-actions: Also rename the main branch here by @lhchavez in #5771
- ci: don't use ninja on macOS by @ethomson in #5780
- ci: use GitHub for storing mingw-w64 build dependency by @ethomson in #5855
- docker: remove the entrypoint by @ethomson in #5980
- http: don't require a password by @ethomson in #5972
- ci: update nightly to use source path by @ethomson in #5989
- ci: add centos 7 and centos 8 by @ethomson in #5992
- ci: update centos builds by @ethomson in #5995
- ci: tag new containers with the latest tag by @ethomson in #6000
Dependency updates
- ntlm: ntlmclient is now v0.9.1
Full Changelog: v1.1.0...v1.2.0