Git fork
at reftables-rust 370 lines 16 kB view raw
1Git 2.25 Release Notes 2====================== 3 4Updates since v2.24 5------------------- 6 7Backward compatibility notes 8 9 10UI, Workflows & Features 11 12 * A tutorial on object enumeration has been added. 13 14 * The branch description ("git branch --edit-description") has been 15 used to fill the body of the cover letters by the format-patch 16 command; this has been enhanced so that the subject can also be 17 filled. 18 19 * "git rebase --preserve-merges" has been marked as deprecated; this 20 release stops advertising it in the "git rebase -h" output. 21 22 * The code to generate multi-pack index learned to show (or not to 23 show) progress indicators. 24 25 * "git apply --3way" learned to honor merge.conflictStyle 26 configuration variable, like merges would. 27 28 * The custom format for "git log --format=<format>" learned the l/L 29 placeholder that is similar to e/E that fills in the e-mail 30 address, but only the local part on the left side of '@'. 31 32 * Documentation pages for "git shortlog" now list commit limiting 33 options explicitly. 34 35 * The patterns to detect function boundary for Elixir language has 36 been added. 37 38 * The completion script (in contrib/) learned that the "--onto" 39 option of "git rebase" can take its argument as the value of the 40 option. 41 42 * The userdiff machinery has been taught that "async def" is another 43 way to begin a "function" in Python. 44 45 * "git range-diff" learned to take the "--notes=<ref>" and the 46 "--no-notes" options to control the commit notes included in the 47 log message that gets compared. 48 49 * "git rev-parse --show-toplevel" run outside of any working tree did 50 not error out, which has been corrected. 51 52 * A few commands learned to take the pathspec from the standard input 53 or a named file, instead of taking it as the command line 54 arguments, with the "--pathspec-from-file" option. 55 56 * "git submodule" learned a subcommand "set-url". 57 58 * "git log" family learned "--pretty=reference" that gives the name 59 of a commit in the format that is often used to refer to it in log 60 messages. 61 62 * The interaction between "git clone --recurse-submodules" and 63 alternate object store was ill-designed. The documentation and 64 code have been taught to make more clear recommendations when the 65 users see failures. 66 67 * Management of sparsely checked-out working tree has gained a 68 dedicated "sparse-checkout" command. 69 70 * Miscellaneous small UX improvements on "git-p4". 71 72 * "git sparse-checkout list" subcommand learned to give its output in 73 a more concise form when the "cone" mode is in effect. 74 75 76Performance, Internal Implementation, Development Support etc. 77 78 * Debugging support for lazy cloning has been a bit improved. 79 80 * Move the definition of a set of bitmask constants from 0ctal 81 literal to (1U<<count) notation. 82 83 * Test updates to prepare for SHA-2 transition continues. 84 85 * Crufty code and logic accumulated over time around the object 86 parsing and low-level object access used in "git fsck" have been 87 cleaned up. 88 89 * The implementation of "git log --graph" got refactored and then its 90 output got simplified. 91 92 * Follow recent push to move API docs from Documentation/ to header 93 files and update config.h 94 95 * "git bundle" has been taught to use the parse options API. "git 96 bundle verify" learned "--quiet" and "git bundle create" learned 97 options to control the progress output. 98 99 * Handling of commit objects that use non UTF-8 encoding during 100 "rebase -i" has been improved. 101 102 * The beginning of rewriting "git add -i" in C. 103 104 * A label used in the todo list that are generated by "git rebase 105 --rebase-merges" is used as a part of a refname; the logic to come 106 up with the label has been tightened to avoid names that cannot be 107 used as such. 108 109 * The logic to avoid duplicate label names generated by "git rebase 110 --rebase-merges" forgot that the machinery itself uses "onto" as a 111 label name, which must be avoided by auto-generated labels, which 112 has been corrected. 113 114 * We have had compatibility fallback macro definitions for "PRIuMAX", 115 "PRIu32", etc. but did not for "PRIdMAX", while the code used the 116 last one apparently without any hiccup reported recently. The 117 fallback macro definitions for these <inttypes.h> macros that must 118 appear in C99 systems have been removed. 119 120 * Recently we have declared that GIT_TEST_* variables take the 121 usual boolean values (it used to be that some used "non-empty 122 means true" and taking GIT_TEST_VAR=YesPlease as true); make 123 sure we notice and fail when non-bool strings are given to 124 these variables. 125 126 * Users of oneway_merge() (like "reset --hard") learned to take 127 advantage of fsmonitor to avoid unnecessary lstat(2) calls. 128 129 * Performance tweak on "git push" into a repository with many refs 130 that point at objects we have never heard of. 131 132 * PerfTest fix to avoid stale result mixed up with the latest round 133 of test results. 134 135 * Hide lower-level verify_signed-buffer() API as a pure helper to 136 implement the public check_signature() function, in order to 137 encourage new callers to use the correct and more strict 138 validation. 139 140 * Unnecessary reading of state variables back from the disk during 141 sequencer operation has been reduced. 142 143 * The code has been made to avoid gmtime() and localtime() and prefer 144 their reentrant counterparts. 145 146 * In a repository with many packfiles, the cost of the procedure that 147 avoids registering the same packfile twice was unnecessarily high 148 by using an inefficient search algorithm, which has been corrected. 149 150 * Redo "git name-rev" to avoid recursive calls. 151 152 * FreeBSD CI support via Cirrus-CI has been added. 153 154 155Fixes since v2.24 156----------------- 157 158 * "rebase -i" ceased to run post-commit hook by mistake in an earlier 159 update, which has been corrected. 160 161 * "git notes copy $original" ought to copy the notes attached to the 162 original object to HEAD, but a mistaken tightening to command line 163 parameter validation made earlier disabled that feature by mistake. 164 165 * When all files from some subdirectory were renamed to the root 166 directory, the directory rename heuristics would fail to detect that 167 as a rename/merge of the subdirectory to the root directory, which has 168 been corrected. 169 170 * Code clean-up and a bugfix in the logic used to tell worktree local 171 and repository global refs apart. 172 (merge f45f88b2e4 sg/dir-trie-fixes later to maint). 173 174 * "git stash save" in a working tree that is sparsely checked out 175 mistakenly removed paths that are outside the area of interest. 176 (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint). 177 178 * "git rev-parse --git-path HEAD.lock" did not give the right path 179 when run in a secondary worktree. 180 (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint). 181 182 * "git merge --no-commit" needs "--no-ff" if you do not want to move 183 HEAD, which has been corrected in the manual page for "git bisect". 184 (merge 8dd327b246 ma/bisect-doc-sample-update later to maint). 185 186 * "git worktree add" internally calls "reset --hard" that should not 187 descend into submodules, even when submodule.recurse configuration 188 is set, but it was affected. This has been corrected. 189 (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint). 190 191 * Messages from die() etc. can be mixed up from multiple processes 192 without even line buffering on Windows, which has been worked 193 around. 194 (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint). 195 196 * HTTP transport had possible allocator/deallocator mismatch, which 197 has been corrected. 198 199 * The watchman integration for fsmonitor was racy, which has been 200 corrected to be more conservative. 201 (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint). 202 203 * Fetching from multiple remotes into the same repository in parallel 204 had a bad interaction with the recent change to (optionally) update 205 the commit-graph after a fetch job finishes, as these parallel 206 fetches compete with each other. Which has been corrected. 207 208 * Recent update to "git stash pop" made the command empty the index 209 when run with the "--quiet" option, which has been corrected. 210 211 * "git fetch" codepath had a big "do not lazily fetch missing objects 212 when I ask if something exists" switch. This has been corrected by 213 marking the "does this thing exist?" calls with "if not please do not 214 lazily fetch it" flag. 215 216 * Test update to avoid wasted cycles. 217 (merge e0316695ec sg/skip-skipped-prereq later to maint). 218 219 * Error handling after "git push" finishes sending the packdata and 220 waits for the response to the remote side has been improved. 221 (merge ad7a403268 jk/send-pack-remote-failure later to maint). 222 223 * Some codepaths in "gitweb" that forgot to escape URLs generated 224 based on end-user input have been corrected. 225 (merge a376e37b2c jk/gitweb-anti-xss later to maint). 226 227 * CI jobs for macOS has been made less chatty when updating perforce 228 package used during testing. 229 (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint). 230 231 * "git unpack-objects" used to show progress based only on the number 232 of received and unpacked objects, which stalled when it has to 233 handle an unusually large object. It now shows the throughput as 234 well. 235 (merge bae60ba7e9 sg/unpack-progress-throughput later to maint). 236 237 * The sequencer machinery compared the HEAD and the state it is 238 attempting to commit to decide if the result would be a no-op 239 commit, even when amending a commit, which was incorrect, and 240 has been corrected. 241 242 * The code to parse GPG output used to assume incorrectly that the 243 finterprint for the primary key would always be present for a valid 244 signature, which has been corrected. 245 (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint). 246 247 * "git submodule status" and "git submodule status --cached" show 248 different things, but the documentation did not cover them 249 correctly, which has been corrected. 250 (merge 8d483c8408 mg/doc-submodule-status-cached later to maint). 251 252 * "git reset --patch $object" without any pathspec should allow a 253 tree object to be given, but incorrectly required a committish, 254 which has been corrected. 255 256 * "git submodule status" that is run from a subdirectory of the 257 superproject did not work well, which has been corrected. 258 (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint). 259 260 * The revision walking machinery uses resources like per-object flag 261 bits that need to be reset before a new iteration of walking 262 begins, but the resources related to topological walk were not 263 cleared correctly, which has been corrected. 264 (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint). 265 266 * TravisCI update. 267 (merge 176441bfb5 sg/osx-force-gcc-9 later to maint). 268 269 * While running "revert" or "cherry-pick --edit" for multiple 270 commits, a recent regression incorrectly detected "nothing to 271 commit, working tree clean", instead of replaying the commits, 272 which has been corrected. 273 (merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint). 274 275 * Work around a issue where a FD that is left open when spawning a 276 child process and is kept open in the child can interfere with the 277 operation in the parent process on Windows. 278 279 * One kind of progress messages were always given during commit-graph 280 generation, instead of following the "if it takes more than two 281 seconds, show progress" pattern, which has been corrected. 282 283 * "git rebase" did not work well when format.useAutoBase 284 configuration variable is set, which has been corrected. 285 286 * The "diff" machinery learned not to lose added/removed blank lines 287 in the context when --ignore-blank-lines and --function-context are 288 used at the same time. 289 (merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint). 290 291 * The test on "fast-import" used to get stuck when "fast-import" died 292 in the middle. 293 (merge 0d9b0d7885 sg/t9300-robustify later to maint). 294 295 * "git format-patch" can take a set of configured format.notes values 296 to specify which notes refs to use in the log message part of the 297 output. The behaviour of this was not consistent with multiple 298 --notes command line options, which has been corrected. 299 (merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint). 300 301 * "git p4" used to ignore lfs.storage configuration variable, which 302 has been corrected. 303 (merge ea94b16fb8 rb/p4-lfs later to maint). 304 305 * Assorted fixes to the directory traversal API. 306 (merge 6836d2fe06 en/fill-directory-fixes later to maint). 307 308 * Forbid pathnames that the platform's filesystem cannot represent on 309 MinGW. 310 (merge 4dc42c6c18 js/mingw-reserved-filenames later to maint). 311 312 * "git rebase --signoff" stopped working when the command was written 313 in C, which has been corrected. 314 (merge 4fe7e43c53 en/rebase-signoff-fix later to maint). 315 316 * An earlier update to Git for Windows declared that a tree object is 317 invalid if it has a path component with backslash in it, which was 318 overly strict, which has been corrected. The only protection the 319 Windows users need is to prevent such path (or any path that their 320 filesystem cannot check out) from entering the index. 321 (merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint). 322 323 * The code to write split commit-graph file(s) upon fetching computed 324 bogus value for the parameter used in splitting the resulting 325 files, which has been corrected. 326 (merge 63020f175f ds/commit-graph-set-size-mult later to maint). 327 328 * Other code cleanup, docfix, build fix, etc. 329 (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint). 330 (merge 8b656572ca sg/commit-graph-usage-fix later to maint). 331 (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint). 332 (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint). 333 (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint). 334 (merge 270de6acbe en/t6024-style later to maint). 335 (merge 14c4776d75 ns/test-desc-typofix later to maint). 336 (merge 68d40f30c4 dj/typofix-merge-strat later to maint). 337 (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint). 338 (merge 169bed7421 rs/parse-options-dup-null-fix later to maint). 339 (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint). 340 (merge b018719927 ma/t7004 later to maint). 341 (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint). 342 (merge 46efd28be1 ep/guard-kset-tar-headers later to maint). 343 (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint). 344 (merge f0e58b3fe8 pb/submodule-update-fetches later to maint). 345 (merge 2a02262078 dl/t5520-cleanup later to maint). 346 (merge a4fb016ba1 js/pkt-line-h-typofix later to maint). 347 (merge 54a7a64613 rs/simplify-prepare-cmd later to maint). 348 (merge 3eae30e464 jk/lore-is-the-archive later to maint). 349 (merge 14b7664df8 dl/lore-is-the-archive later to maint). 350 (merge 0e40a73a4c po/bundle-doc-clonable later to maint). 351 (merge e714b898c6 as/t7812-missing-redirects-fix later to maint). 352 (merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint). 353 (merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint). 354 (merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint). 355 (merge 11de8dd7ef dr/branch-usage-casefix later to maint). 356 (merge e05e8cf074 rs/archive-zip-code-cleanup later to maint). 357 (merge 147ee35558 rs/commit-export-env-simplify later to maint). 358 (merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint). 359 (merge 51a0a4ed95 mr/bisect-use-after-free later to maint). 360 (merge cc2bd5c45d pb/submodule-doc-xref later to maint). 361 (merge df5be01669 ja/doc-markup-cleanup later to maint). 362 (merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint). 363 (merge 20a67e8ce9 js/use-test-tool-on-path later to maint). 364 (merge 4e61b2214d ew/packfile-syscall-optim later to maint). 365 (merge ace0f86c7f pb/clarify-line-log-doc later to maint). 366 (merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint). 367 (merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint). 368 (merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint). 369 (merge f8740c586b pm/am-in-body-header-doc-update later to maint). 370 (merge 5814d44d9b tm/doc-submodule-absorb-fix later to maint).