1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
|
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).
* Lift the limitation to use changed-path filter in "git log" so that
it can be used for a pathspec with multiple literal paths.
* Clean up the way how signature on commit objects are exported to
and imported from fast-import stream.
* Remove unsupported, unused, and unsupportable old option from "git
log".
* Document recently added "git imap-send --list" with an example.
* "git pull" learned to pay attention to pull.autostash configuration
variable, which overrides rebase/merge.autostash.
* "git for-each-ref" learns "--start-after" option to help
applications that want to page its output.
* "git switch" and "git restore" are declared to be no longer
experimental.
* "git -c alias.foo=bar foo -h baz" reported "'foo' is aliased to
'bar'" and then went on to run "git foo -h baz", which was
unexpected. Tighten the rule so that alias expansion is reported
only when "-h" is the sole option.
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 <fmt>" 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 "git prune" used to ignore the passed-in
repository object and used the `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.
* Define .precision to more canned parse-options type to avoid bugs
coming from using a variable with a wrong type to capture the
parsed values.
* Flipping the default hash function to SHA-256 at Git 3.0 boundary
is planned.
* Declare weather-balloon we raised for "bool" type 18 months ago a
success and officially allow using the type in our codebase.
* GIT_TEST_INSTALLED was not honored in the recent topic related to
SHA256 hashes, which has been corrected.
* The pop_most_recent_commit() function can have quite expensive
worst case performance characteristics, which has been optimized by
using prio-queue data structure.
* Move structure definition from unrelated header file to where it
belongs.
* To help our developers, document what C99 language features are
being considered for adoption, in addition to what past experiments
have already decided.
* The reftable unit tests are now ported to the "clar" unit testing
framework.
* Redefine where the multi-pack-index sits in the object subsystem,
which recently was restructured to allow multiple backends that
support a single object source that belongs to one repository. A
MIDX does span multiple "object sources".
* Reduce implicit assumption and dependence on the_repository in the
object-file subsystem.
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 <pathspec>" 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).
* "git fetch --prune" used to be O(n^2) expensive when there are many
refs, which has been corrected.
(merge 87d8d8c5d0 ph/fetch-prune-optim later to maint).
* When a ref creation at refs/heads/foo/bar fails, the files backend
now removes refs/heads/foo/ if the directory is otherwise not used.
(merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).
* "pack-objects" has been taught to avoid pointing into objects in
cruft packs from midx.
* "git remote" now detects remote names that overlap with each other
(e.g., remote nickname "outer" and "outer/inner" are used at the
same time), as it will lead to overlapping remote-tracking
branches.
(merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).
* The gpg.program configuration variable, which names a pathname to
the (custom) GPG compatible program, can now be spelled with ~tilde
expansion.
(merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).
* Our <sane-ctype.h> header file relied on that the system-supplied
<ctype.h> header is not later included, which would override our
macro definitions, but "amazon linux" broke this assumption. Fix
this by preemptively including <ctype.h> near the beginning of
<sane-ctype.h> ourselves.
(merge 9d3b33125f ps/sane-ctype-workaround later to maint).
* Clean-up compat/bswap.h mess.
(merge f4ac32c03a ss/compat-bswap-revamp later to maint).
* Meson-based build did not handle libexecdir setting correctly,
which has been corrected.
(merge 056dbe8612 rj/meson-libexecdir-fix later to maint).
* Document that we do not require "real" name when signing your
patches off.
(merge 1f0fed312a bc/contribution-under-non-real-names later to maint).
* "git commit" that concludes a conflicted merge failed to notice and remove
existing comment added automatically (like "# Conflicts:") when the
core.commentstring is set to 'auto'.
(merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint).
* "git rebase -i" with bogus rebase.instructionFormat configuration
failed to produce the todo file after recording the state files,
leading to confused "git status"; this has been corrected.
(merge ade14bffd7 ow/rebase-verify-insn-fmt-before-initializing-state later to maint).
* A few file descriptors left unclosed upon program completion in a
few test helper programs are now closed.
(merge 0f1b33815b hl/test-helper-fd-close later to maint).
* Interactive prompt code did not correctly strip CRLF from the end
of line on Windows.
(merge 711a20827b js/prompt-crlf-fix later to maint).
* The config API had a set of convenience wrapper functions that
implicitly use the_repository instance; they have been removed and
inlined at the calling sites.
* "git add/etc -p" now honor the diff.context configuration variable,
and also they learn to honor the -U<n> command-line option.
(merge 2b3ae04011 lm/add-p-context later to maint).
* The case where a new submodule takes a path where there used to be a
completely different subproject is now dealt with a bit better than
before.
(merge 5ed8c5b465 kj/renamed-submodule later to maint).
* The deflate codepath in "git archive --format=zip" had a
longstanding bug coming from misuse of zlib API, which has been
corrected.
* 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).
(merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
(merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
(merge b27be108c8 ja/doc-git-log-markup later to maint).
(merge 14d7583beb pw/config-kvi-remove-path later to maint).
(merge f31abb421d jc/do-not-scan-argv-without-parsing later to maint).
(merge 26552cb62a jk/unleak-reflog-expire-entry later to maint).
(merge 339d95fda9 jc/ci-print-test-failures-fix later to maint).
(merge 8c3add51a8 cb/meson-avoid-broken-macos-pcre2 later to maint).
(merge 5247da07b8 ps/meson-clar-decls-fix later to maint).
(merge f3ef347bb2 ch/t7450-recursive-clone-test-fix later to maint).
(merge 4ac3302a1a jc/doc-release-vs-clear later to maint).
(merge 3bdd897413 ms/meson-with-ancient-git-wo-ls-files-dedup later to maint).
(merge cca758d324 kh/doc-fast-import-historical later to maint).
(merge 9b0781196a jc/test-hashmap-is-still-here later to maint).
(merge 1bad05bacc jk/revert-squelch-compiler-warning later to maint).
(merge 3a7e783d9c dl/squelch-maybe-uninitialized later to maint).
|