Git fork
at reftables-rust 441 lines 18 kB view raw
1Git v2.50 Release Notes 2======================= 3 4UI, Workflows & Features 5------------------------ 6 7 * A post-processing filter for "diff --raw" output has been 8 introduced. 9 10 * "git repack" learned "--combine-cruft-below-size" option that 11 controls how cruft-packs are combined. 12 13 * TCP keepalive behaviour on http transports can now be configured by 14 calling cURL library. 15 16 * Incrementally updating multi-pack index files. 17 18 * "git reflog" learns "drop" subcommand, that discards the entire 19 reflog data for a ref. 20 21 * A new userdiff driver for ".ini" format configuration files has 22 been added. 23 24 * The job to coalesce loose objects into packfiles in "git 25 maintenance" now has configurable batch size. 26 27 * "git clone" still gave the message about the default branch name; 28 this message has been turned into an advice message that can be 29 turned off. 30 31 * "git rev-list" learns machine-parsable output format that delimits 32 each field with NUL. 33 34 * "git maintenance" learns a new task to expire reflog entries. 35 36 * Auth-related (and unrelated) error handling in send-email has been 37 made more robust. 38 39 * Updating multiple references have only been possible in an all-or-nothing 40 fashion with transactions, but it can be more efficient to batch 41 multiple updates even when some of them are allowed to fail in a 42 best-effort manner. A new "best effort batches of updates" mode 43 has been introduced. 44 45 * "git help --build-options" reports SHA-1 and SHA-256 backends used 46 in the build. 47 48 * "git cat-file --batch" and friends learned to allow "--filter=" to 49 omit certain objects, just like the transport layer does. 50 51 * "git blame --porcelain" mode now talks about unblamable lines and 52 lines that are blamed to an ignored commit. 53 54 * The build procedure installs bash (but not zsh) completion script. 55 56 * send-email has been updated to work better with Outlook's SMTP server. 57 58 * "git diff --minimal" used to give non-minimal output when its 59 optimization kicked in, which has been disabled. 60 61 * "git index-pack --fix-thin" used to abort to prevent a cycle in 62 delta chains from forming in a corner case even when there is no 63 such cycle. 64 65 * Make repository clean-up tasks that "gc" can do available to "git 66 maintenance" front-end. 67 68 * Bundle-URI feature did not use refs recorded in the bundle other 69 than normal branches as anchoring points to optimize the follow-up 70 fetch during "git clone"; now it is told to utilize all. 71 72 * The `send-email` documentation has been updated with OAuth2.0 73 related examples. 74 75 * Two of the "scalar" subcommands that add a repository that hasn't 76 been under "scalar"'s control are taught an option not to enable the 77 scheduled maintenance on it. 78 79 * The userdiff pattern for shell scripts has been updated to cope 80 with more bash-isms. 81 82 * "git merge-tree" learned an option to see if it resolves cleanly 83 without actually creating a result. 84 85 * The commit title in the "rebase -i" todo file are now prefixed with 86 '#', just like a merge commit being replayed. 87 88 * "git receive-pack" optionally learns not to care about connectivity 89 check, which can be useful when the repository arranges to ensure 90 connectivity by some other means. 91 92 * "git notes --help" documentation updates. 93 94 95Performance, Internal Implementation, Development Support etc. 96-------------------------------------------------------------- 97 98 * A handful of built-in command implementations have been rewritten 99 to use the repository instance supplied by git.c:run_builtin(), its 100 caller. 101 102 * "git fsck" becomes more careful when checking the refs. 103 104 * "git fast-export | git fast-import" learns to deal with commit and 105 tag objects with embedded signatures a bit better. This is highly 106 experimental and the format of the data stream may change in the 107 future without compatibility guarantees. 108 109 * The code paths to check whether a refname X is available (by seeing 110 if another ref X/Y exists, etc.) have been optimized. 111 112 * First step of deprecating and removing merge-recursive. 113 114 * In protocol v2 where the refs advertisement is constrained, we try 115 to tell the server side not to limit the advertisement when there 116 is no specific need to, which has been the source of confusion and 117 recent bugs. Revamp the logic to simplify. 118 119 * Update meson based build procedure for breaking changes support. 120 121 * Enable -Wunreachable-code for developer builds. 122 123 * Ensure what we write in assert() does not have side effects, 124 and introduce ASSERT() macro to mark those that cannot be 125 mechanically checked for lack of side effects. 126 127 * Give more meaningful error return values from block writer layer of 128 the reftable ref-API backend. 129 130 * Make the code in reftable library less reliant on the service 131 routines it used to borrow from Git proper, to make it easier to 132 use by external users of the library. 133 134 * CI update. 135 136 * The object layer has been updated to take an explicit repository 137 instance as a parameter in more code paths. 138 139 * Some warnings from "-Wsign-compare" for builtin/rm.c have been 140 squelched. 141 142 * A few traditional unit tests have been rewritten to use the clar 143 framework. 144 145 * Some warnings from "-Wsign-compare" for pathspec.c have been 146 squelched. 147 148 * "make test" used to have a hard dependency on (basic) Perl; tests 149 have been rewritten help environment with NO_PERL test the build as 150 much as possible. 151 152 * Remove remnants of the recursive merge strategy backend, which was 153 superseded by the ort merge strategy. 154 155 * Optimize the code to dedup references recorded in a bundle file. 156 157 * Update parse-options API to catch mistakes to pass address of an 158 integral variable of a wrong type/size. 159 160 * Since a call to repo_config() can be called with repo set to NULL 161 these days, a command that is marked as RUN_SETUP in the builtin 162 command table does not have to check repo with NULL before making 163 the call. 164 165 * Overhaul of the reftable API. 166 167 * Reduce requirement for Perl in our documentation build and a few 168 scripts. 169 170 * The build procedure based on Meson learned to drive the 171 benchmarking tests. 172 173 * Code clean-up for meson-based build infrastructure. 174 175 * Add an equivalent to "make hdr-check" target to meson based builds. 176 177 * Further code clean-up in the object-store layer. 178 179 * Build performance fix. 180 181 * Teach "git send-email" to also consult `hostname -f` for mail 182 domain to compute the identity given to SMTP servers. 183 184 * The dependency on the_repository variable has been reduced from the 185 code paths in "git replay". 186 187 * Support to create a loose object file with unknown object type has 188 been dropped. 189 190 * The code path to access the "packed-refs" file while "fsck" is 191 taught to mmap the file, instead of reading the whole file into 192 memory. 193 194 * Assorted fixes for issues found with CodeQL. 195 196 * Remove the leftover hints to the test framework to mark tests that 197 do not pass the leak checker tests, as they should no longer be 198 needed. 199 200 * When a stale .midx file refers to .pack files that no longer exist, 201 we ended up checking for these non-existent files repeatedly, which 202 has been optimized by memoizing the non-existence. 203 204 * Build settings have been improved for BSD based systems. 205 206 * Newer version of libcURL detected curl_easy_setopt() calls we made 207 with platform-natural "int" when we should have used "long", which 208 all have been corrected. 209 210 * Tests that compare $HOME and $(pwd), which should be the same 211 directory unless the tests chdir's around, would fail when the user 212 enters the test directory via symbolic links, which has been 213 corrected. 214 215 216Fixes since v2.49 217----------------- 218 219 * The refname exclusion logic in the packed-ref backend has been 220 broken for some time, which confused upload-pack to advertise 221 different set of refs. This has been corrected. 222 (merge 10e8a9352b tb/refs-exclude-fixes later to maint). 223 224 * The merge-recursive and merge-ort machinery crashed in corner cases 225 when certain renames are involved. 226 (merge 3adba40858 en/merge-process-renames-crash-fix later to maint). 227 228 * Certain "cruft" objects would have never been refreshed when there 229 are multiple cruft packs in the repository, which has been 230 corrected. 231 (merge 08f612ba70 tb/multi-cruft-pack-refresh-fix later to maint). 232 233 * The xdiff code on 32-bit platform misbehaved when an insanely large 234 context size is given, which has been corrected. 235 (merge d39e28e68c rs/xdiff-context-length-fix later to maint). 236 237 * GitHub Actions CI switched on a CI/CD variable that does not exist 238 when choosing what packages to install etc., which has been 239 corrected. 240 (merge ee89f7c79d kn/ci-meson-check-build-docs-fix later to maint). 241 242 * Using "git name-rev --stdin" as an example, improve the framework to 243 prepare tests to pretend to be in the future where the breaking 244 changes have already happened. 245 (merge de3dec1187 jc/name-rev-stdin later to maint). 246 247 * An earlier code refactoring of the hash machinery missed a few 248 required calls to init_fn. 249 (merge d39f04b638 jh/hash-init-fixes later to maint). 250 251 * A documentation page was left out from formatting and installation, 252 which has been corrected. 253 (merge ae85116f18 pw/build-breaking-changes-doc later to maint). 254 255 * The bash command line completion script (in contrib/) has been 256 updated to cope with remote repository nicknames with slashes in 257 them. 258 (merge 778d2f1760 dm/completion-remote-names-fix later to maint). 259 260 * "Dubious ownership" checks on Windows has been tightened up. 261 (merge 5bb88e89ef js/mingw-admins-are-special later to maint). 262 263 * Layout configuration in vimdiff backend didn't work as advertised, 264 which has been corrected. 265 (merge 93bab2d04b fr/vimdiff-layout-fixes later to maint). 266 267 * Fix our use of zlib corner cases. 268 (merge 1cb2f293f5 jk/zlib-inflate-fixes later to maint). 269 270 * Fix lockfile contention in reftable code on Windows. 271 (merge 0a3dceabf1 ps/mingw-creat-excl-fix later to maint). 272 273 * "git-merge-file" documentation source, which has lines that look 274 like conflict markers, lacked custom conflict marker size defined, 275 which has been corrected.. 276 (merge d3b5832381 pw/custom-conflict-marker-size-for-merge-related-docs later to maint). 277 278 * Squelch false-positive from sparse. 279 (merge da87b58014 dd/sparse-glibc-workaround later to maint). 280 281 * Adjust to the deprecation of use of Ubuntu 20.04 GitHub Actions CI. 282 (merge 832d9f6d0b js/ci-github-update-ubuntu later to maint). 283 284 * Work around CI breakage due to fedora base image getting updated. 285 (merge 8a471a663b js/ci-fedora-gawk later to maint). 286 287 * A ref transaction corner case fix. 288 (merge b9fadeead7 jt/ref-transaction-abort-fix later to maint). 289 290 * Random build fixes. 291 (merge 85e1d6819f ps/misc-build-fixes later to maint). 292 293 * "git fetch [<remote>]" with only the configured fetch refspec 294 should be the only thing to update refs/remotes/<remote>/HEAD, 295 but the code was overly eager to do so in other cases. 296 297 * Incorrect sorting of refs with bytes with high-bit set on platforms 298 with signed char led to a BUG, which has been corrected. 299 300 * "make perf" fixes. 301 (merge 1665f12fa0 pb/perf-test-fixes later to maint). 302 303 * Doc mark-up updates. 304 (merge 5a5565ec44 ja/doc-reset-mv-rm-markup-updates later to maint). 305 306 * Work around false positive from CodeQL checker. 307 (merge 0f558141ed js/range-check-codeql-workaround later to maint). 308 309 * "git log --{left,right}-only A...B", when A and B does not share 310 any common ancestor, now behaves as expected. 311 (merge e7ef4be7c2 mh/left-right-limited later to maint). 312 313 * Document the convention to disable hooks altogether by setting the 314 hooksPath configuration variable to /dev/null. 315 (merge 1b2eee94f1 ds/doc-disable-hooks later to maint). 316 317 * Make sure outage of third-party sites that supply P4, Git-LFS, and 318 JGit we use for testing would not prevent our CI jobs from running 319 at all. 320 321 * Various build tweaks, including CSPRNG selection on some platforms. 322 (merge cdda67de03 rj/build-tweaks later to maint). 323 324 * Developer support fix.. 325 (merge 32b74b9809 js/git-perf-env-override later to maint). 326 327 * Fix for scheduled maintenance tasks on platforms using launchctl. 328 (merge eb2d7beb0e jh/gc-launchctl-schedule-fix later to maint). 329 330 * Update to arm64 Windows port (part of which had been reverted as it 331 broke builds for existing platforms, which may need to be redone in 332 future releases). 333 334 * hashmap API clean-up to ensure hashmap_clear() leaves a cleared map 335 in a reusable state. 336 (merge 9481877de3 en/hashmap-clear-fix later to maint). 337 338 * "git mv a a/b dst" would ask to move the directory 'a' itself, as 339 well as its contents, in a single destination directory, which is 340 a contradicting request that is impossible to satisfy. This case is 341 now detected and the command errors out. 342 (merge 974f0d4664 ps/mv-contradiction-fix later to maint). 343 344 * Further refinement on CI messages when an optional external 345 software is unavailable (e.g. due to third-party service outage). 346 (merge 956acbefbd jc/ci-skip-unavailable-external-software later to maint). 347 348 * Test result aggregation did not work in Meson based CI jobs. 349 (merge bd38ed5be1 ps/ci-test-aggreg-fix-for-meson later to maint). 350 351 * Code clean-up around stale CI elements and building with Visual Studio. 352 (merge a7b060f67f js/ci-buildsystems-cleanup later to maint). 353 354 * "git add 'f?o'" did not add 'foo' if 'f?o', an unusual pathname, 355 also existed on the working tree, which has been corrected. 356 (merge ec727e189c kj/glob-path-with-special-char later to maint). 357 358 * The fallback implementation of open_nofollow() depended on 359 open("symlink", O_NOFOLLOW) to set errno to ELOOP, but a few BSD 360 derived systems use different errno, which has been worked around. 361 (merge f47bcc3413 cf/wrapper-bsd-eloop later to maint). 362 363 * Use-after-free fix in the sequencer. 364 (merge 5dbaec628d pw/sequencer-reflog-use-after-free later to maint). 365 366 * win+Meson CI pipeline, unlike other pipelines for Windows, 367 used to build artifacts in developer mode, which has been changed to 368 build them in release mode for consistency. 369 (merge 184abdcf05 js/ci-build-win-in-release-mode later to maint). 370 371 * CI settings at GitLab has been updated to run MSVC based Meson job 372 automatically (as opposed to be done only upon manual request). 373 (merge 6389579b2f ps/ci-gitlab-enable-msvc-meson-job later to maint). 374 375 * "git apply" and "git add -i/-p" code paths no longer unnecessarily 376 expand sparse-index while working. 377 (merge ecf9ba20e3 ds/sparse-apply-add-p later to maint). 378 379 * Avoid adding directory path to a sparse-index tree entries to the 380 name-hash, since they would bloat the hashtable without anybody 381 querying for them. This was done already for a single threaded 382 part of the code, but now the multi-threaded code also does the 383 same. 384 (merge 2e60aabc75 am/sparse-index-name-hash-fix later to maint). 385 386 * Recent versions of Perl started warning against "! A =~ /pattern/" 387 which does not negate the result of the matching. As it turns out 388 that the problematic function is not even called, it was removed. 389 (merge 67cae845d2 op/cvsserver-perl-warning later to maint). 390 391 * "git apply --index/--cached" when applying a deletion patch in 392 reverse failed to give the mode bits of the path "removed" by the 393 patch to the file it creates, which has been corrected. 394 395 * "git verify-refs" errored out in a repository in which 396 linked worktrees were prepared with Git 2.43 or lower. 397 (merge d5b3c38b8a sj/ref-contents-check-fix later to maint). 398 399 * Update total_ram() function on BSD variants. 400 401 * Update online_cpus() function on BSD variants. 402 403 * Revert a botched bswap.h change that broke ntohll() functions on 404 big-endian systems with __builtin_bswap32/64(). 405 406 * Fixes for GitHub Actions Coverity job. 407 (merge 3cc4fc1ebd js/github-ci-win-coverity-fix later to maint). 408 409 * Other code cleanup, docfix, build fix, etc. 410 (merge 227c4f33a0 ja/doc-block-delimiter-markup-fix later to maint). 411 (merge 2bfd3b3685 ab/decorate-code-cleanup later to maint). 412 (merge 5337daddc7 am/dir-dedup-decl-of-repository later to maint). 413 (merge 554051d691 en/diff-rename-follow-fix later to maint). 414 (merge a18c18b470 en/random-cleanups later to maint). 415 (merge 5af21c9acb hj/doc-rev-list-ancestry-fix later to maint). 416 (merge 26d76ca284 aj/doc-restore-p-update later to maint). 417 (merge 2c0dcb9754 cc/lop-remote later to maint). 418 (merge 7b399322a2 ja/doc-branch-markup later to maint). 419 (merge ee434e1807 pw/doc-pack-refs-markup-fix later to maint). 420 (merge c000918eb7 tb/bitamp-typofix later to maint). 421 (merge fa8cd29676 js/imap-send-peer-cert-verify later to maint). 422 (merge 98b423bc1c rs/clear-commit-marks-simplify later to maint). 423 (merge 133d065dd6 ta/bulk-checkin-signed-compare-false-warning-fix later to maint). 424 (merge d2827dc31e es/meson-build-skip-coccinelle later to maint). 425 (merge ee8edb7156 dk/vimdiff-doc-fix later to maint). 426 (merge 107d889303 md/t1403-path-is-file later to maint). 427 (merge abd4192b07 js/comma-semicolon-confusion later to maint). 428 (merge 27b7264206 ab/environment-clean-header later to maint). 429 (merge ff4a749354 as/typofix-in-env-h-header later to maint). 430 (merge 86eef3541e az/tighten-string-array-constness later to maint). 431 (merge 25292c301d lo/remove-log-reencode-from-rev-info later to maint). 432 (merge 1aa50636fd jk/p5332-testfix later to maint). 433 (merge 42cf4ac552 ps/ci-resurrect-p4-on-github later to maint). 434 (merge 104add8368 js/diff-codeql-false-positive-workaround later to maint). 435 (merge f62977b93c en/get-tree-entry-doc later to maint). 436 (merge e5dd0a05ed ly/am-split-stgit-leakfix later to maint). 437 (merge bac220e154 rc/t1001-test-path-is-file later to maint). 438 (merge 91db6c735d ly/reftable-writer-leakfix later to maint). 439 (merge 20e4e9ad0b jc/doc-synopsis-option-markup later to maint). 440 (merge cddcee7f64 es/meson-configure-build-options-fix later to maint). 441 (merge cea9f55f00 wk/sparse-checkout-doc-fix later to maint).