Git fork
at reftables-rust 404 lines 16 kB view raw
1Git v2.38 Release Notes 2======================= 3 4UI, Workflows & Features 5 6 * "git remote show [-n] frotz" now pays attention to negative 7 pathspec. 8 9 * "git push" sometimes performs poorly when reachability bitmaps are 10 used, even in a repository where other operations are helped by 11 bitmaps. The push.useBitmaps configuration variable is introduced 12 to allow disabling use of reachability bitmaps only for "git push". 13 14 * "git grep -m<max-hits>" is a way to limit the hits shown per file. 15 16 * "git merge-tree" learned a new mode where it takes two commits and 17 computes a tree that would result in the merge commit, if the 18 histories leading to these two commits were to be merged. 19 20 * "git mv A B" in a sparsely populated working tree can be asked to 21 move a path between directories that are "in cone" (i.e. expected 22 to be materialized in the working tree) and "out of cone" 23 (i.e. expected to be hidden). The handling of such cases has been 24 improved. 25 26 * Earlier, HTTP transport clients learned to tell the server side 27 what locale they are in by sending Accept-Language HTTP header, but 28 this was done only for some requests but not others. 29 30 * Introduce a safe.barerepository configuration variable that 31 allows users to forbid discovery of bare repositories. 32 33 * Various messages that come from the pack-bitmap codepaths have been 34 tweaked. 35 36 * "git rebase -i" learns to update branches whose tip appear in the 37 rebased range with "--update-refs" option. 38 39 * "git ls-files" learns the "--format" option to tweak its output. 40 41 * "git cat-file" learned an option to use the mailmap when showing 42 commit and tag objects. 43 44 * When "git merge" finds that it cannot perform a merge, it should 45 restore the working tree to the state before the command was 46 initiated, but in some corner cases it didn't. 47 48 * Operating modes like "--batch" of "git cat-file" command learned to 49 take NUL-terminated input, instead of one-item-per-line. 50 51 * "git rm" has become more aware of the sparse-index feature. 52 53 * "git rev-list --disk-usage" learned to take an optional value 54 "human" to show the reported value in human-readable format, like 55 "3.40MiB". 56 57 * The "diagnose" feature to create a zip archive for diagnostic 58 material has been lifted from "scalar" and made into a feature of 59 "git bugreport". 60 61 * The namespaces used by "log --decorate" from "refs/" hierarchy by 62 default has been tightened. 63 64 * "git rev-list --ancestry-path=C A..B" is a natural extension of 65 "git rev-list A..B"; instead of choosing a subset of A..B to those 66 that have ancestry relationship with A, it lets a subset with 67 ancestry relationship with C. 68 69 * "scalar" now enables built-in fsmonitor on enlisted repositories, 70 when able. 71 72 * The bash prompt (in contrib/) learned to optionally indicate when 73 the index is unmerged. 74 75 * "git clone" command learned the "--bundle-uri" option to coordinate 76 with hosting sites the use of pre-prepared bundle files. 77 78 * "git range-diff" learned to honor pathspec argument if given. 79 80 * "git format-patch --from=<ident>" can be told to add an in-body 81 "From:" line even for commits that are authored by the given 82 <ident> with "--force-in-body-from" option. 83 84 * The built-in fsmonitor refuses to work on a network mounted 85 repositories; a configuration knob for users to override this has 86 been introduced. 87 88 * The "scalar" addition from Microsoft is now part of the core Git 89 installation. 90 91 92Performance, Internal Implementation, Development Support etc. 93 94 * Collection of what is referenced by objects in promisor packs have 95 been optimized to inspect these objects in the in-pack order. 96 97 * Introduce a helper to see if a branch is already being worked on 98 (hence should not be newly checked out in a working tree), which 99 performs much better than the existing find_shared_symref() to 100 replace many uses of the latter. 101 102 * Teach "git archive" to (optionally and then by default) avoid 103 spawning an external "gzip" process when creating ".tar.gz" (and 104 ".tgz") archives. 105 106 * Allow large objects read from a packstream to be streamed into a 107 loose object file straight, without having to keep it in-core as a 108 whole. 109 110 * Further preparation to turn git-submodule.sh into a builtin 111 continues. 112 113 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp 114 macro, which would improve maintainability and readability. 115 116 * Teach "make all" to build gitweb as well. 117 118 * Tweak tests so that they still work when the "git init" template 119 did not create .git/info directory. 120 121 * Add Coccinelle rules to detect the pattern of initializing and then 122 finalizing a structure without using it in between at all, which 123 happens after code restructuring and the compilers fail to 124 recognize as an unused variable. 125 126 * The code to convert between GPG trust level strings and internal 127 constants we use to represent them have been cleaned up. 128 129 * Support for libnettle as SHA256 implementation has been added. 130 131 * The way "git multi-pack" uses parse-options API has been improved. 132 133 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY 134 macro has been improved. 135 136 * API tweak to make it easier to run fuzz testing on commit-graph parser. 137 138 * Omit fsync-related trace2 entries when their values are all zero. 139 140 * The codepath to write multi-pack index has been taught to release a 141 large chunk of memory that holds an array of objects in the packs, 142 as soon as it is done with the array, to reduce memory consumption. 143 144 * Add a level of redirection to array allocation API in xdiff part, 145 to make it easier to share with the libgit2 project. 146 147 * "git fetch" client logs the partial clone filter used in the trace2 148 output. 149 150 * The "bundle URI" design gets documented. 151 152 * The common ancestor negotiation exchange during a "git fetch" 153 session now leaves trace log. 154 155 * Test portability improvements. 156 (merge 4d1d843be7 mt/rot13-in-c later to maint). 157 158 * The "subcommand" mode is introduced to parse-options API and update 159 the command line parser of Git commands with subcommands. 160 161 * The pack bitmap file gained a bitmap-lookup table to speed up 162 locating the necessary bitmap for a given commit. 163 164 * The assembly version of SHA-1 implementation for PPC has been 165 removed. 166 167 * The server side that responds to "git fetch" and "git clone" 168 request has been optimized by allowing it to send objects in its 169 object store without recomputing and validating the object names. 170 171 * Annotate function parameters that are not used (but cannot be 172 removed for structural reasons), to prepare us to later compile 173 with -Wunused warning turned on. 174 175 * Share the text used to explain configuration variables used by "git 176 <subcmd>" in "git help <subcmd>" with the text from "git help config". 177 178 * "git mv A B" in a sparsely populated working tree can be asked to 179 move a path from a directory that is "in cone" to another directory 180 that is "out of cone". Handling of such a case has been improved. 181 182 * The chainlint script for our tests has been revamped. 183 184 185Fixes since v2.37 186----------------- 187 188 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't 189 correctly record a removed file to the index, which was fixed. 190 191 * Certain diff options are currently ignored when combined-diff is 192 shown; mark them as incompatible with the feature. 193 194 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and 195 add some missing information to the documentation. 196 197 * Fixes for tests when the source directory has unusual characters in 198 its path, e.g. whitespaces, double-quotes, etc. 199 200 * "git mktree --missing" lazily fetched objects that are missing from 201 the local object store, which was totally unnecessary for the purpose 202 of creating the tree object(s) from its input. 203 204 * Give _() markings to fatal/warning/usage: labels that are shown in 205 front of these messages. 206 207 * References to commands-to-be-typed-literally in "git rebase" 208 documentation mark-up have been corrected. 209 210 * In a non-bare repository, the behavior of Git when the 211 core.worktree configuration variable points at a directory that has 212 a repository as its subdirectory, regressed in Git 2.27 days. 213 214 * Recent update to vimdiff layout code has been made more robust 215 against different end-user vim settings. 216 217 * Plug various memory leaks, both in the main code and in test-tool 218 commands. 219 220 * Fixes a long-standing corner case bug around directory renames in 221 the merge-ort strategy. 222 223 * The resolve-undo information in the index was not protected against 224 GC, which has been corrected. 225 226 * A corner case bug where lazily fetching objects from a promisor 227 remote resulted in infinite recursion has been corrected. 228 229 * "git clone" from a repository with some ref whose HEAD is unborn 230 did not set the HEAD in the resulting repository correctly, which 231 has been corrected. 232 233 * An earlier attempt to plug leaks placed a clean-up label to jump to 234 at a bogus place, which as been corrected. 235 236 * Variable quoting fix in the vimdiff driver of "git mergetool" 237 238 * "git shortlog -n" relied on the underlying qsort() to be stable, 239 which shouldn't have. Fixed. 240 241 * A fix for a regression in test framework. 242 243 * mkstemp() emulation on Windows has been improved. 244 245 * Add missing documentation for "include" and "includeIf" features in 246 "git config" file format, which incidentally teaches the command 247 line completion to include them in its offerings. 248 249 * Avoid "white/black-list" in documentation and code comments. 250 251 * Workaround for a compiler warning against use of die() in 252 osx-keychain (in contrib/). 253 254 * Workaround for a false positive compiler warning. 255 256 * "git p4" working on UTF-16 files on Windows did not implement 257 CRLF-to-LF conversion correctly, which has been corrected. 258 259 * "git p4" did not handle non-ASCII client name well, which has been 260 corrected. 261 262 * "rerere-train" script (in contrib/) used to honor commit.gpgSign 263 while recreating the throw-away merges. 264 265 * "git checkout" miscounted the paths it updated, which has been 266 corrected. 267 268 * Fix for a bug that makes write-tree to fail to write out a 269 non-existent index as a tree, introduced in 2.37. 270 271 * There was a bug in the codepath to upgrade generation information 272 in commit-graph from v1 to v2 format, which has been corrected. 273 274 * Gitweb had legacy URL shortener that is specific to the way 275 projects hosted on kernel.org used to (but no longer) work, which 276 has been removed. 277 278 * Fix build procedure for Windows that uses CMake so that it can pick 279 up the shell interpreter from local installation location. 280 281 * Conditionally allow building Python interpreter on Windows 282 283 * Fix to lstat() emulation on Windows. 284 285 * Older gcc with -Wall complains about the universal zero initializer 286 "struct s = { 0 };" idiom, which makes developers' lives 287 inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The 288 build procedure has been tweaked to help these compilers. 289 290 * Plug memory leaks in the failure code path in the "merge-ort" merge 291 strategy backend. 292 293 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error. 294 295 * A follow-up fix to a fix for a regression in 2.36 around hooks. 296 297 * Avoid repeatedly running getconf to ask libc version in the test 298 suite, and instead just as it once per script. 299 300 * Platform-specific code that determines if a directory is OK to use 301 as a repository has been taught to report more details, especially 302 on Windows. 303 304 * "vimdiff3" regression fix. 305 306 * "git fsck" reads mode from tree objects but canonicalizes the mode 307 before passing it to the logic to check object sanity, which has 308 hid broken tree objects from the checking logic. This has been 309 corrected, but to help existing projects with broken tree objects 310 that they cannot fix retroactively, the severity of anomalies this 311 code detects has been demoted to "info" for now. 312 313 * Fixes to sparse index compatibility work for "reset" and "checkout" 314 commands. 315 316 * An earlier optimization discarded a tree-object buffer that is 317 still in use, which has been corrected. 318 319 * Fix deadlocks between main Git process and subprocess spawned via 320 the pipe_command() API, that can kill "git add -p" that was 321 reimplemented in C recently. 322 323 * The sequencer machinery translated messages left in the reflog by 324 mistake, which has been corrected. 325 326 * xcalloc(), imitating calloc(), takes "number of elements of the 327 array", and "size of a single element", in this order. A call that 328 does not follow this ordering has been corrected. 329 330 * The preload-index codepath made copies of pathspec to give to 331 multiple threads, which were left leaked. 332 333 * Update the version of Ubuntu used for GitHub Actions CI from 18.04 334 to 22.04. 335 336 * The auto-stashed local changes created by "git merge --autostash" 337 was mixed into a conflicted state left in the working tree, which 338 has been corrected. 339 340 * Multi-pack index got corrupted when preferred pack changed from one 341 pack to another in a certain way, which has been corrected. 342 (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint). 343 344 * The clean-up of temporary files created via mks_tempfile_dt() was 345 racy and attempted to unlink() the leading directory when signals 346 are involved, which has been corrected. 347 (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint). 348 349 * FreeBSD portability fix for "git maintenance" that spawns "crontab" 350 to schedule tasks. 351 (merge ee69e7884e bc/gc-crontab-fix later to maint). 352 353 * Those who use diff-so-fancy as the diff-filter noticed a regression 354 or two in the code that parses the diff output in the built-in 355 version of "add -p", which has been corrected. 356 (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint). 357 358 * Segfault fix-up to an earlier fix to the topic to teach "git reset" 359 and "git checkout" work better in a sparse checkout. 360 (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint). 361 362 * "git diff --no-index A B" managed its the pathnames of its two 363 input files rather haphazardly, sometimes leaking them. The 364 command line argument processing has been straightened out to clean 365 it up. 366 (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint). 367 368 * "git rev-list --verify-objects" ought to inspect the contents of 369 objects and notice corrupted ones, but it didn't when the commit 370 graph is in use, which has been corrected. 371 (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint). 372 373 * More fixes to "add -p" 374 (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint). 375 376 * The parser in the script interface to parse-options in "git 377 rev-parse" has been updated to diagnose a bogus input correctly. 378 (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint). 379 380 * The code that manages list-object-filter structure, used in partial 381 clones, leaked the instances, which has been plugged. 382 (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint). 383 384 * Fix another UI regression in the reimplemented "add -p". 385 (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint). 386 387 * "git fetch" over protocol v2 sent an incorrect ref prefix request 388 to the server and made "git pull" with configured fetch refspec 389 that does not cover the remote branch to merge with fail, which has 390 been corrected. 391 (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint). 392 393 * A result from opendir() was leaking in the commit-graph expiration 394 codepath, which has been plugged. 395 (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint). 396 397 * Just like we have coding guidelines, we now have guidelines for 398 reviewers. 399 (merge e01b851923 vd/doc-reviewing-guidelines later to maint). 400 401 * Other code cleanup, docfix, build fix, etc. 402 (merge 77b9e85c0f vd/fix-perf-tests later to maint). 403 (merge 0682bc43f5 jk/test-crontab-fixes later to maint). 404 (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).