Git fork
at reftables-rust 416 lines 17 kB view raw
1Git 2.32 Release Notes 2====================== 3 4Backward compatibility notes 5---------------------------- 6 7 * ".gitattributes", ".gitignore", and ".mailmap" files that are 8 symbolic links are ignored. 9 10 * "git apply --3way" used to first attempt a straight application, 11 and only fell back to the 3-way merge algorithm when the stright 12 application failed. Starting with this version, the command will 13 first try the 3-way merge algorithm and only when it fails (either 14 resulting with conflict or the base versions of blobs are missing), 15 falls back to the usual patch application. 16 17 18Updates since v2.31 19------------------- 20 21UI, Workflows & Features 22 23 * It does not make sense to make ".gitattributes", ".gitignore" and 24 ".mailmap" symlinks, as they are supposed to be usable from the 25 object store (think: bare repositories where HEAD:.mailmap etc. are 26 used). When these files are symbolic links, we used to read the 27 contents of the files pointed by them by mistake, which has been 28 corrected. 29 30 * "git stash show" learned to optionally show untracked part of the 31 stash. 32 33 * "git log --format='...'" learned "%(describe)" placeholder. 34 35 * "git repack" so far has been only capable of repacking everything 36 under the sun into a single pack (or split by size). A cleverer 37 strategy to reduce the cost of repacking a repository has been 38 introduced. 39 40 * The http codepath learned to let the credential layer to cache the 41 password used to unlock a certificate that has successfully been 42 used. 43 44 * "git commit --fixup=<commit>", which was to tweak the changes made 45 to the contents while keeping the original log message intact, 46 learned "--fixup=(amend|reword):<commit>", that can be used to 47 tweak both the message and the contents, and only the message, 48 respectively. 49 50 * "git send-email" learned to honor the core.hooksPath configuration. 51 52 * "git format-patch -v<n>" learned to allow a reroll count that is 53 not an integer. 54 55 * "git commit" learned "--trailer <key>[=<value>]" option; together 56 with the interpret-trailers command, this will make it easier to 57 support custom trailers. 58 59 * "git clone --reject-shallow" option fails the clone as soon as we 60 notice that we are cloning from a shallow repository. 61 62 * A configuration variable has been added to force tips of certain 63 refs to be given a reachability bitmap. 64 65 * "gitweb" learned "e-mail privacy" feature to redact strings that 66 look like e-mail addresses on various pages. 67 68 * "git apply --3way" has always been "to fall back to 3-way merge 69 only when straight application fails". Swap the order of falling 70 back so that 3-way is always attempted first (only when the option 71 is given, of course) and then straight patch application is used as 72 a fallback when it fails. 73 74 * "git apply" now takes "--3way" and "--cached" at the same time, and 75 work and record results only in the index. 76 77 * The command line completion (in contrib/) has learned that 78 CHERRY_PICK_HEAD is a possible pseudo-ref. 79 80 * Userdiff patterns for "Scheme" has been added. 81 82 * "git log" learned "--diff-merges=<style>" option, with an 83 associated configuration variable log.diffMerges. 84 85 * "git log --format=..." placeholders learned %ah/%ch placeholders to 86 request the --date=human output. 87 88 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the 89 system-wide configuration file with GIT_CONFIG_SYSTEM that lets 90 users specify from which file to read the system-wide configuration 91 (setting it to an empty file would essentially be the same as 92 setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the 93 per-user configuration in $HOME/.gitconfig. 94 95 * "git add" and "git rm" learned not to touch those paths that are 96 outside of sparse checkout. 97 98 * "git rev-list" learns the "--filter=object:type=<type>" option, 99 which can be used to exclude objects of the given kind from the 100 packfile generated by pack-objects. 101 102 * The command line completion (in contrib/) for "git stash" has been 103 updated. 104 105 * "git subtree" updates. 106 107 * It is now documented that "format-patch" skips merges. 108 109 * Options to "git pack-objects" that take numeric values like 110 --window and --depth should not accept negative values; the input 111 validation has been tightened. 112 113 * The way the command line specified by the trailer.<token>.command 114 configuration variable receives the end-user supplied value was 115 both error prone and misleading. An alternative to achieve the 116 same goal in a safer and more intuitive way has been added, as 117 the trailer.<token>.cmd configuration variable, to replace it. 118 119 * "git add -i --dry-run" does not dry-run, which was surprising. The 120 combination of options has taught to error out. 121 122 * "git push" learns to discover common ancestor with the receiving 123 end over protocol v2. This will hopefully make "git push" as 124 efficient as "git fetch" in avoiding objects from getting 125 transferred unnecessarily. 126 127 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to 128 control how lines ending with CRLF wrapped in base64 or qp are 129 handled. 130 131 132Performance, Internal Implementation, Development Support etc. 133 134 * Rename detection rework continues. 135 136 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with 137 prerequisites to catch broken tests that depend on the side effects 138 of optional pieces, but did not work at all when negative 139 prerequisites were involved. 140 (merge 27d578d904 jk/fail-prereq-testfix later to maint). 141 142 * "git diff-index" codepath has been taught to trust fsmonitor status 143 to reduce number of lstat() calls. 144 (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint). 145 146 * Reorganize Makefile to allow building git.o and other essential 147 objects without extra stuff needed only for testing. 148 149 * Preparatory API changes for parallel checkout. 150 151 * A simple IPC interface gets introduced to build services like 152 fsmonitor on top. 153 154 * Fsck API clean-up. 155 156 * SECURITY.md that is facing individual contributors and end users 157 has been introduced. Also a procedure to follow when preparing 158 embargoed releases has been spelled out. 159 (merge 09420b7648 js/security-md later to maint). 160 161 * Optimize "rev-list --use-bitmap-index --objects" corner case that 162 uses negative tags as the stopping points. 163 164 * CMake update for vsbuild. 165 166 * An on-disk reverse-index to map the in-pack location of an object 167 back to its object name across multiple packfiles is introduced. 168 169 * Generate [ec]tags under $(QUIET_GEN). 170 171 * Clean-up codepaths that implements "git send-email --validate" 172 option and improves the message from it. 173 174 * The last remnant of gettext-poison has been removed. 175 176 * The test framework has been taught to optionally turn the default 177 merge strategy to "ort" throughout the system where we use 178 three-way merges internally, like cherry-pick, rebase etc., 179 primarily to enhance its test coverage (the strategy has been 180 available as an explicit "-s ort" choice). 181 182 * A bit of code clean-up and a lot of test clean-up around userdiff 183 area. 184 185 * Handling of "promisor packs" that allows certain objects to be 186 missing and lazily retrievable has been optimized (a bit). 187 188 * When packet_write() fails, we gave an extra error message 189 unnecessarily, which has been corrected. 190 191 * The checkout machinery has been taught to perform the actual 192 write-out of the files in parallel when able. 193 194 * Show errno in the trace output in the error codepath that calls 195 read_raw_ref method. 196 197 * Effort to make the command line completion (in contrib/) safe with 198 "set -u" continues. 199 200 * Tweak a few tests for "log --format=..." that show timestamps in 201 various formats. 202 203 * The reflog expiry machinery has been taught to emit trace events. 204 205 * Over-the-wire protocol learns a new request type to ask for object 206 sizes given a list of object names. 207 208 209Fixes since v2.31 210----------------- 211 212 * The fsmonitor interface read from its input without making sure 213 there is something to read from. This bug is new in 2.31 214 timeframe. 215 216 * The data structure used by fsmonitor interface was not properly 217 duplicated during an in-core merge, leading to use-after-free etc. 218 219 * "git bisect" reimplemented more in C during 2.30 timeframe did not 220 take an annotated tag as a good/bad endpoint well. This regression 221 has been corrected. 222 223 * Fix macros that can silently inject unintended null-statements. 224 225 * CALLOC_ARRAY() macro replaces many uses of xcalloc(). 226 227 * Update insn in Makefile comments to run fuzz-all target. 228 229 * Fix a corner case bug in "git mv" on case insensitive systems, 230 which was introduced in 2.29 timeframe. 231 232 * We had a code to diagnose and die cleanly when a required 233 clean/smudge filter is missing, but an assert before that 234 unnecessarily fired, hiding the end-user facing die() message. 235 (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint). 236 237 * Update C code that sets a few configuration variables when a remote 238 is configured so that it spells configuration variable names in the 239 canonical camelCase. 240 (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint). 241 242 * A new configuration variable has been introduced to allow choosing 243 which version of the generation number gets used in the 244 commit-graph file. 245 (merge 702110aac6 ds/commit-graph-generation-config later to maint). 246 247 * Perf test update to work better in secondary worktrees. 248 (merge 36e834abc1 jk/perf-in-worktrees later to maint). 249 250 * Updates to memory allocation code around the use of pcre2 library. 251 (merge c1760352e0 ab/grep-pcre2-allocfix later to maint). 252 253 * "git -c core.bare=false clone --bare ..." would have segfaulted, 254 which has been corrected. 255 (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint). 256 257 * When "git checkout" removes a path that does not exist in the 258 commit it is checking out, it wasn't careful enough not to follow 259 symbolic links, which has been corrected. 260 (merge fab78a0c3d mt/checkout-remove-nofollow later to maint). 261 262 * A few option description strings started with capital letters, 263 which were corrected. 264 (merge 5ee90326dc cc/downcase-opt-help later to maint). 265 266 * Plug or annotate remaining leaks that trigger while running the 267 very basic set of tests. 268 (merge 68ffe095a2 ah/plugleaks later to maint). 269 270 * The hashwrite() API uses a buffering mechanism to avoid calling 271 write(2) too frequently. This logic has been refactored to be 272 easier to understand. 273 (merge ddaf1f62e3 ds/clarify-hashwrite later to maint). 274 275 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn 276 the editor as expected (e.g. "revert --no-edit" after a conflict 277 still asked to edit the message), which has been corrected. 278 (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint). 279 280 * "git daemon" has been tightened against systems that take backslash 281 as directory separator. 282 (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint). 283 284 * A NULL-dereference bug has been corrected in an error codepath in 285 "git for-each-ref", "git branch --list" etc. 286 (merge c685450880 jk/ref-filter-segfault-fix later to maint). 287 288 * Streamline the codepath to fix the UTF-8 encoding issues in the 289 argv[] and the prefix on macOS. 290 (merge c7d0e61016 tb/precompose-prefix-simplify later to maint). 291 292 * The command-line completion script (in contrib/) had a couple of 293 references that would have given a warning under the "-u" (nounset) 294 option. 295 (merge c5c0548d79 vs/completion-with-set-u later to maint). 296 297 * When "git pack-objects" makes a literal copy of a part of existing 298 packfile using the reachability bitmaps, its update to the progress 299 meter was broken. 300 (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint). 301 302 * The dependencies for config-list.h and command-list.h were broken 303 when the former was split out of the latter, which has been 304 corrected. 305 (merge 56550ea718 sg/bugreport-fixes later to maint). 306 307 * "git push --quiet --set-upstream" was not quiet when setting the 308 upstream branch configuration, which has been corrected. 309 (merge f3cce896a8 ow/push-quiet-set-upstream later to maint). 310 311 * The prefetch task in "git maintenance" assumed that "git fetch" 312 from any remote would fetch all its local branches, which would 313 fetch too much if the user is interested in only a subset of 314 branches there. 315 (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint). 316 317 * Clarify that pathnames recorded in Git trees are most often (but 318 not necessarily) encoded in UTF-8. 319 (merge 9364bf465d ab/pathname-encoding-doc later to maint). 320 321 * "git --config-env var=val cmd" weren't accepted (only 322 --config-env=var=val was). 323 (merge c331551ccf ps/config-env-option-with-separate-value later to maint). 324 325 * When the reachability bitmap is in effect, the "do not lose 326 recently created objects and those that are reachable from them" 327 safety to protect us from races were disabled by mistake, which has 328 been corrected. 329 (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint). 330 331 * Cygwin pathname handling fix. 332 (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint). 333 334 * "git rebase --[no-]reschedule-failed-exec" did not work well with 335 its configuration variable, which has been corrected. 336 (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint). 337 338 * Portability fix for command line completion script (in contrib/). 339 (merge f2acf763e2 si/zsh-complete-comment-fix later to maint). 340 341 * "git repack -A -d" in a partial clone unnecessarily loosened 342 objects in promisor pack. 343 344 * "git bisect skip" when custom words are used for new/old did not 345 work, which has been corrected. 346 347 * A few variants of informational message "Already up-to-date" has 348 been rephrased. 349 (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint). 350 351 * "git submodule update --quiet" did not propagate the quiet option 352 down to underlying "git fetch", which has been corrected. 353 (merge 62af4bdd42 nc/submodule-update-quiet later to maint). 354 355 * Document that our test can use "local" keyword. 356 (merge a84fd3bcc6 jc/test-allows-local later to maint). 357 358 * The word-diff mode has been taught to work better with a word 359 regexp that can match an empty string. 360 (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint). 361 362 * "git p4" learned to find branch points more efficiently. 363 (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint). 364 365 * When "git update-ref -d" removes a ref that is packed, it left 366 empty directories under $GIT_DIR/refs/ for 367 (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint). 368 369 * "git clean" and "git ls-files -i" had confusion around working on 370 or showing ignored paths inside an ignored directory, which has 371 been corrected. 372 (merge b548f0f156 en/dir-traversal later to maint). 373 374 * The handling of "%(push)" formatting element of "for-each-ref" and 375 friends was broken when the same codepath started handling 376 "%(push:<what>)", which has been corrected. 377 (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint). 378 379 * The bash prompt script (in contrib/) did not work under "set -u". 380 (merge 5c0cbdb107 en/prompt-under-set-u later to maint). 381 382 * The "chainlint" feature in the test framework is a handy way to 383 catch common mistakes in writing new tests, but tends to get 384 expensive. An knob to selectively disable it has been introduced 385 to help running tests that the developer has not modified. 386 (merge 2d86a96220 jk/test-chainlint-softer later to maint). 387 388 * The "rev-parse" command did not diagnose the lack of argument to 389 "--path-format" option, which was introduced in v2.31 era, which 390 has been corrected. 391 (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint). 392 393 * Other code cleanup, docfix, build fix, etc. 394 (merge f451960708 dl/cat-file-doc-cleanup later to maint). 395 (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint). 396 (merge ea7e63921c jr/doc-ignore-typofix later to maint). 397 (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint). 398 (merge 42efa1231a jk/filter-branch-sha256 later to maint). 399 (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint). 400 (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint). 401 (merge 47957485b3 ab/read-tree later to maint). 402 (merge 2be927f3d1 ab/diff-no-index-tests later to maint). 403 (merge 76593c09bb ab/detox-gettext-tests later to maint). 404 (merge 28e29ee38b jc/doc-format-patch-clarify later to maint). 405 (merge fc12b6fdde fm/user-manual-use-preface later to maint). 406 (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint). 407 (merge 61a7660516 hn/reftable-tables-doc-update later to maint). 408 (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint). 409 (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint). 410 (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint). 411 (merge 7a14acdbe6 po/diff-patch-doc later to maint). 412 (merge f91371b948 pw/patience-diff-clean-up later to maint). 413 (merge 3a7f0908b6 mt/clean-clean later to maint). 414 (merge d4e2d15a8b ab/streaming-simplify later to maint). 415 (merge 0e59f7ad67 ah/merge-ort-i18n later to maint). 416 (merge e6f68f62e0 ls/typofix later to maint).