Git v2.51 Release Notes ======================= UI, Workflows & Features ------------------------ * Userdiff patterns for the R language have been added. * Documentation for "git send-email" has been updated with a bit more credential helper and OAuth information. * "git cat-file --batch" learns to understand %(objectmode) atom to allow the caller to tell missing objects (due to repository corruption) and submodules (whose commit objects are OK to be missing) apart. * "git diff --no-index dirA dirB" can limit the comparison with pathspec at the end of the command line, just like normal "git diff". * "git subtree" (in contrib/) learned to grok GPG signing its commits. * "git whatchanged" that is longer to type than "git log --raw" which is its modern rough equivalent has outlived its usefulness more than 10 years ago. Plan to deprecate and remove it. * An interchange format for stash entries is defined, and subcommand of "git stash" to import/export has been added. * "git merge/pull" has been taught the "--compact-summary" option to use the compact-summary format, intead of diffstat, when showing the summary of the incoming changes. * "git imap-send" has been broken for a long time, which has been resurrected and then taught to talk OAuth2.0 etc. * Some error messages from "git imap-send" has been updated. * When "git daemon" sees a signal while attempting to accept() a new client, instead of retrying, it skipped it by mistake, which has been corrected. * The reftable ref backend has matured enough; Git 3.0 will make it the default format in a newly created repositories by default. * "netrc" credential helper has been improved to understand textual service names (like smtp) in addition to the numeric port numbers (like 25). Performance, Internal Implementation, Development Support etc. -------------------------------------------------------------- * "git pack-objects" learned to find delta bases from blobs at the same path, using the --path-walk API. * CodingGuidelines update. * Add settings for Solaris 10 & 11. * Meson-based build/test framework now understands TAP output generated by our tests. * "Do not explicitly initialize to zero" rule has been clarified in the CodingGuidelines document. * A test helper "test_seq" function learned the "-f " option, which allowed us to simplify a lot of test scripts. * A lot of stale stuff has been removed from the contrib/ hierarchy. * "git push" and "git fetch" are taught to update refs in batches to gain performance. * Some code paths in the "git prune" used to ignore passed in repository object and used the_repository singleton instance instead, which has been corrected. * Update ".clang-format" and ".editorconfig" to match our style guide a bit better. * "make coccicheck" succeeds even when spatch made suggestions, which has been updated to fail in such a case. * Code clean-up around object access API. Fixes since v2.50 ----------------- Unless otherwise noted, all the changes in 2.50.X maintenance track, including security updates, are included in this release. * A memory-leak in an error code path has been plugged. (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint). * A memory-leak in an error code path has been plugged. (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint). * Some leftover references to documentation source files that no longer exist, due to recent ".txt" -> ".adoc" renaming, have been corrected. (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint). * "git stash -p " improvements. (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint). * "git send-email" incremented its internal message counter when a message was edited, which made logic that treats the first message specially misbehave, which has been corrected. (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint). * "git stash" recorded a wrong branch name when submodules are present in the current checkout, which has been corrected. (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint). * When asking to apply mailmap to both author and committer field while showing a commit object, the field that appears later was not correctly parsed and replaced, which has been corrected. (merge abf94a283f sa/multi-mailmap-fix later to maint). * "git maintenance" lacked the care "git gc" had to avoid holding onto the repository lock for too long during packing refs, which has been remedied. (merge 1b5074e614 ps/maintenance-ref-lock later to maint). * Avoid regexp_constraint and instead use comparison_constraint when listing functions to exclude from application of coccinelle rules, as spatch can be built with different regexp engine X-<. (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint). * Updating submodules from the upstream did not work well when submodule's HEAD is detached, which has been improved. (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint). * Remove unnecessary check from "git daemon" code. (merge 0c856224d2 cb/daemon-fd-check-fix later to maint). * Use of sysctl() system call to learn the total RAM size used on BSDs has been corrected. (merge 781c1cf571 cb/total-ram-bsd-fix later to maint). * Drop FreeBSD 4 support and declare that we support only FreeBSD 12 or later, which has memmem() supported. (merge 0392f976a7 bs/config-mak-freebsd later to maint). * A diff-filter with negative-only specification like "git log --diff-filter=d" did not trigger correctly, which has been fixed. (merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint). * A failure to open the index file for writing due to conflicting access did not state what went wrong, which has been corrected. (merge 9455397a5c hy/read-cache-lock-error-fix later to maint). * Tempfile removal fix in the codepath to sign commits with SSH keys. (merge 4498127b04 re/ssh-sign-buffer-fix later to maint). * Code and test clean-up around string-list API. (merge 6e5b26c3ff sj/string-list later to maint). * "git apply -N" should start from the current index and register only new files, but it instead started from an empty index, which has been corrected. (merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint). * Leakfix with a new and a bit invasive test on pack-bitmap files. (merge bfd5522e98 ly/load-bitmap-leakfix later to maint). * Other code cleanup, docfix, build fix, etc. (merge b257adb571 lo/my-first-ow-doc-update later to maint). (merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint). (merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint). (merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint). (merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint). (merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint). (merge 65dff89c6b ma/doc-diff-cc-headers later to maint). (merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint). (merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint). (merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint). (merge 855cfc65ae rm/t2400-modernize later to maint). (merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint). (merge ff73f375bb jg/mailinfo-leakfix later to maint). (merge 996f14c02b jj/doc-branch-markup-fix later to maint). (merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint). (merge b0e9d25865 jk/fix-leak-send-pack later to maint). (merge f3a9558c8c bs/remote-helpers-doc-markup-fix later to maint). (merge c4e9775c60 kh/doc-config-subcommands later to maint). (merge de404249ab ps/perlless-test-fixes later to maint). (merge 953049eed8 ts/merge-orig-head-doc-fix later to maint). (merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint).