I Use This!
Very High Activity

News

Analyzed about 4 hours ago. based on code collected about 7 hours ago.
Posted about 2 months ago by Christian Couder
Hi everyone, The 108th edition of Git Rev News is now published: https://git.github.io/rev_news/2024/02/29/edition-108/ Thanks a lot to Brooke Kuhlmann, Jack Lot, Štěpán Němec and Bruno Brito who helped this month! Enjoy, Christian, Jakub ... [More] , Markus and Kaartic. PS: An issue for the next edition is already opened and contributions are welcome: https://github.com/git/git.github.io/issues/697 [Less]
Posted about 2 months ago by Johannes Schindelin
Dear Git users, I hereby announce that Git for Windows 2.44.0 is available from: https://gitforwindows.org/ Changes since Git for Windows v2.43.0 (November 20th 2023) Git for Windows for Windows v2.44 is the last version to support for ... [More] Windows 7 and for Windows 8, see MSYS2's corresponding deprecation announcement (Git for Windows relies on MSYS2 for components such as Bash and Perl). Please also note that the 32-bit variant of Git for Windows is deprecated; Its last official release is planned for 2025. New Features * Comes with Git v2.44.0. * Comes with libfido2 v1.14.0. * Comes with the MSYS2 runtime (Git for Windows flavor) based on Cygwin v3.4.10. * Comes with Perl v5.38.2. * Git for Windows learned to detect and use native Windows support for ANSI sequences, which allows using 24-bit colors in terminal windows. * Comes with Git LFS v3.4.1. * The repository viewer Tig that is included in Git for Windows can now be called also directly from PowerShell/CMD. * Comes with OpenSSH v9.6.P1. * Comes with Bash v5.2.26. * Comes with GNU TLS v3.8.3. * Comes with OpenSSL v3.2.1. * Comes with cURL v8.6.0. * Comes with GNU Privacy Guard v2.4.4. Bug Fixes * The 32-bit variant of Git for Windows was missing some MSYS2 runtime updates, which was addressed; Do note 32-bit support is phased out. * The Git for Windows installer showed cut-off text in some setups. This has been fixed. * The git credential-manager --help command previously would not find a page to display in the web browser, which has been fixed. * A couple of bugs that could cause Git Bash to hang in certain scenarios were fixed. Git-2.44.0-64-bit.exe | 914ffc96cee0631d09049b9d87d4cd8ac9c98ead9a9f9a094d3341348324a9ec Git-2.44.0-32-bit.exe | 5ba23d73e861d872416175ac6a05304875d6ec420c08d0217329580ca1ea0fff PortableGit-2.44.0-64-bit.7z.exe | 1fc64ca91b9b475ab0ada72c9f7b3addbe69a6c8f520be31425cf21841cca369 PortableGit-2.44.0-32-bit.7z.exe | e70c80672069907961f6db68b0db5e14ea0447f39c74cfd3c385882f3b934c6f MinGit-2.44.0-64-bit.zip | ed4e74e171c59c9c9d418743c7109aa595e0cc0d1c80cac574d69ed5e571ae59 MinGit-2.44.0-32-bit.zip | 3c946898cd78c5106b1672dd80051953bdb245fb46352a70606f271d8b0233c7 MinGit-2.44.0-busybox-64-bit.zip | a2377f6e4214f16afa1a5a23d9a291d09a2234bcac67c5aeb36d9cce4b7b4d5b MinGit-2.44.0-busybox-32-bit.zip | 83dd7903f8a4b2a035eda510d6d1394acc9ff36ce45b9e55efd7dd48c83471a4 Git-2.44.0-64-bit.tar.bz2 | d78c40d768eb7af7e14d5cd47dac89a2e50786c89a67be6249e1a041ae5eb20d Git-2.44.0-32-bit.tar.bz2 | 14541119fe97b4d34126ee136cbdba8da171b8cbd42543185a259128a3eed6b3 Ciao, Johannes [Less]
Posted about 2 months ago by Junio C Hamano
The latest feature release Git v2.44.0 is now available at the usual places. It is comprised of 503 non-merge commits since v2.43.0, contributed by 85 people, 34 of which are new faces [*]. The tarballs are found at: ... [More] https://www.kernel.org/pub/software/scm/git/ The following public repositories all have a copy of the 'v2.44.0' tag and the 'master' branch that the tag points at: url = https://git.kernel.org/pub/scm/git/git url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://github.com/gitster/git New contributors whose contributions weren't in v2.43.0 are as follows. Welcome to the Git development community! Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin, Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang, Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott, lumynou5, Maarten van der Schrieck, Marcel Krause, Marcelo Roberto Jimenez, Michael Lohmann, moti sd, Nikolay Borisov, Nikolay Edigaryev, Ondrej Pohorelsky, Sam Delmerico, Sergey Kosukhin, Shreyansh Paliwal, Sören Krecker, Stan Hu, Tamino Bauknecht, Wilfred Hughes, Willem Verstraeten, Xiaoguang WANG, and Zach FettersMoore. Returning contributors who helped this release are as follows. Thanks for your continued support. Alexander Shopov, Andy Koppe, Arkadii Yakovets, Arthur Chan, Bagas Sanjaya, Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder, Dragan Simic, Elijah Newren, Emir SARI, Eric Sunshine, Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan Tan, Jordi Mas, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio C Hamano, Kate Golovanova, Konstantin Ryabitsev, Kristoffer Haugsbakk, Linus Arver, Matthias Aßhauer, M Hickford, Orgad Shaneh, Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting, Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker, René Scharfe, Rubén Justo, Simon Ser, SZEDER Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon Claes, Vegard Nossum, Victoria Dye, and Yi-Jyun Pan. [*] We are counting not just the authorship contribution but issue reporting, mentoring, helping and reviewing that are recorded in the commit trailers. ---------------------------------------------------------------- Git v2.44 Release Notes ======================= Backward Compatibility Notes * "git checkout -B " used to allow switching to a branch that is in use on another worktree, but this was by mistake. The users need to use "--ignore-other-worktrees" option. UI, Workflows & Features * "git add" and "git stash" learned to support the ":(attr:...)" magic pathspec. * "git rebase --autosquash" is now enabled for non-interactive rebase, but it is still incompatible with the apply backend. * Introduce "git replay", a tool meant on the server side without working tree to recreate a history. * "git merge-file" learned to take the "--diff-algorithm" option to use algorithm different from the default "myers" diff. * Command line completion (in contrib/) learned to complete path arguments to the "add/set" subcommands of "git sparse-checkout" better. * "git checkout -B []" allowed a branch that is in use in another worktree to be updated and checked out, which might be a bit unexpected. The rule has been tightened, which is a breaking change. "--ignore-other-worktrees" option is required to unbreak you, if you are used to the current behaviour that "-B" overrides the safety. * The builtin_objectmode attribute is populated for each path without adding anything in .gitattributes files, which would be useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)" to limit to executables. * "git fetch" learned to pay attention to "fetch.all" configuration variable, which pretends as if "--all" was passed from the command line when no remote parameter was given. * In addition to (rather cryptic) Security Identifiers, show username and domain in the error message when we barf on mismatch between the Git directory and the current user on Windows. * The error message given when "git branch -d branch" fails due to commits unique to the branch has been split into an error and a new conditional advice message. * When given an existing but unreadable file as a configuration file, gitweb behaved as if the file did not exist at all, but now it errors out. This is a change that may break backward compatibility. * When $HOME/.gitconfig is missing but XDG config file is available, we should write into the latter, not former. "git gc" and "git maintenance" wrote into a wrong "global config" file, which have been corrected. * Define "special ref" as a very narrow set that consists of FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to be classified as such are actually just pseudorefs. * All conditional "advice" messages show how to turn them off, which becomes repetitive. Setting advice.* configuration explicitly on now omits the instruction part. * The "disable repository discovery of a bare repository" check, triggered by setting safe.bareRepository configuration variable to 'explicit', has been loosened to exclude the ".git/" directory inside a non-bare repository from the check. So you can do "cd .git && git cmd" to run a Git command that works on a bare repository without explicitly specifying $GIT_DIR now. * The completion script (in contrib/) learned more options that can be used with "git log". * The labels on conflict markers for the common ancestor, our version, and the other version are available to custom 3-way merge driver via %S, %X, and %Y placeholders. * The write codepath for the reftable data learned to honor core.fsync configuration. * The "--fsck-objects" option of "git index-pack" now can take the optional parameter to tweak severity of different fsck errors. * The wincred credential backend has been taught to support oauth refresh token the same way as credential-cache and credential-libsecret backends. * Command line completion support (in contrib/) has been updated for "git bisect". * "git branch" and friends learned to use the formatted text as sorting key, not the underlying timestamp value, when the --sort option is used with author or committer timestamp with a format specifier (e.g., "--sort=creatordate:format:%H:%M:%S"). * The command line completion script (in contrib/) learned to complete configuration variable names better. Performance, Internal Implementation, Development Support etc. * Process to add some form of low-level unit tests has started. * Add support for GitLab CI. * "git for-each-ref --no-sort" still sorted the refs alphabetically which paid non-trivial cost. It has been redefined to show output in an unspecified order, to allow certain optimizations to take advantage of. * Simplify API implementation to delete references by eliminating duplication. * Subject approxidate() and show_date() machinery to OSS-Fuzz. * A new helper to let us pretend that we called lstat() when we know our cache_entry is up-to-date via fsmonitor. * The optimization based on fsmonitor in the "diff --cached" codepath is resurrected with the "fake-lstat" introduced earlier. * Test balloon to use C99 "bool" type from has been added. * "git clone" has been prepared to allow cloning a repository with non-default hash function into a repository that uses the reftable backend. * Streaming spans of packfile data used to be done only from a single, primary, pack in a repository with multiple packfiles. It has been extended to allow reuse from other packfiles, too. * Comment updates to help developers not to attempt to modify messages from plumbing commands that must stay constant. It might make sense to reassess the plumbing needs every few years, but that should be done as a separate effort. * Move test-ctype helper to the unit-test framework. * Instead of manually creating refs/ hierarchy on disk upon a creation of a secondary worktree, which is only usable via the files backend, use the refs API to populate it. * CI for GitLab learned to drive macOS jobs. * A few tests to "git commit -o " and "git commit -i " has been added. * Tests on ref API are moved around to prepare for reftable. * The Makefile often had to say "-L$(path) -R$(path)" that repeats the path to the same library directory for link time and runtime. A Makefile template is used to reduce such repetition. * The priority queue test has been migrated to the unit testing framework. * Setting `feature.experimental` opts the user into multi-pack reuse experiment * Squelch node.js 16 deprecation warnings from GitHub Actions CI by updating actions/github-script and actions/checkout that use node.js 20. * The mechanism to report the filename in the source code, used by the unit-test machinery, assumed that the compiler expanded __FILE__ to the path to the source given to the $(CC), but some compilers give full path, breaking the output. This has been corrected. Fixes since v2.43 ----------------- * The way CI testing used "prove" could lead to running the test suite twice needlessly, which has been corrected. * Update ref-related tests. * "git format-patch --encode-email-headers" ignored the option when preparing the cover letter, which has been corrected. * Newer versions of Getopt::Long started giving warnings against our (ab)use of it in "git send-email". Bump the minimum version requirement for Perl to 5.8.1 (from September 2002) to allow simplifying our implementation. * Earlier we stopped relying on commit-graph that (still) records information about commits that are lost from the object store, which has negative performance implications. The default has been flipped to disable this pessimization. * Stale URLs have been updated to their current counterparts (or archive.org) and HTTP links are replaced with working HTTPS links. * trace2 streams used to record the URLs that potentially embed authentication material, which has been corrected. * The sample pre-commit hook that tries to catch introduction of new paths that use potentially non-portable characters did not notice an existing path getting renamed to such a problematic path, when rename detection was enabled. * The command line parser for the "log" family of commands was too loose when parsing certain numbers, e.g., silently ignoring the extra 'q' in "git log -n 1q" without complaining, which has been tightened up. * "git $cmd --end-of-options --rev -- --path" for some $cmd failed to interpret "--rev" as a rev, and "--path" as a path. This was fixed for many programs like "reset" and "checkout". * "git bisect reset" has been taught to clean up state files and refs even when BISECT_START file is gone. * Some codepaths did not correctly parse configuration variables specified with valueless "true", which has been corrected. * Code clean-up for sanity checking of command line options for "git show-ref". * The code to parse the From e-mail header has been updated to avoid recursion. * "git fetch --atomic" issued an unnecessary empty error message, which has been corrected. * Command line completion script (in contrib/) learned to work better with the reftable backend. * "git status" is taught to show both the branch being bisected and being rebased when both are in effect at the same time. * "git archive --list extra garbage" silently ignored excess command line parameters, which has been corrected. * "git sparse-checkout set" added default patterns even when the patterns are being fed from the standard input, which has been corrected. * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did not handle "--end-of-options" correctly after a recent update. * Unlike other environment variables that took the usual true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1, which has been corrected. * Clearing in-core repository (happens during e.g., "git fetch --recurse-submodules" with commit graph enabled) made in-core commit object in an inconsistent state by discarding the necessary data from commit-graph too early, which has been corrected. * Update to a new feature recently added, "git show-ref --exists". * oss-fuzz tests are built and run in CI. (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint). * Rename detection logic ignored the final line of a file if it is an incomplete line. * GitHub CI update. (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint). * "git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * "git archive --remote=" learned to talk over the smart http (aka stateless) transport. (merge 176cd68634 jx/remote-archive-over-smart-http later to maint). * Fetching via protocol v0 over Smart HTTP transport sometimes failed to correctly auto-follow tags. (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint). * The documentation for the --exclude-per-directory option marked it as deprecated, which confused readers into thinking there may be a plan to remove it in the future, which was not our intention. (merge 0009542cab jc/ls-files-doc-update later to maint). * "git diff --no-index file1 file2" segfaulted while invoking the external diff driver, which has been corrected. * Rewrite //-comments to /* comments */ in files whose comments prevalently use the latter. * Cirrus CI jobs started breaking because we specified version of FreeBSD that is no longer available, which has been corrected. (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint). * A caller called index_file_exists() that takes a string expressed as with a wrong length, which has been corrected. (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint). * A failed "git tag -s" did not necessarily result in an error depending on the crypto backend, which has been corrected. * "git stash" sometimes was silent even when it failed due to unwritable index file, which has been corrected. * "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD", which has been corrected. * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the mechanism by flipping what yes/no means by mistake, which has been corrected. * The sequencer machinery does not use the ref API and instead records names of certain objects it needs for its correct operation in temporary files, which makes these objects susceptible to loss by garbage collection. These temporary files have been added as starting points for reachability analysis to fix this. (merge bc7f5db896 pw/gc-during-rebase later to maint). * "git cherry-pick" invoked during "git rebase -i" session lost the authorship information, which has been corrected. (merge e4301f73ff vn/rebase-with-cherry-pick-authorship later to maint). * The code paths that call repo_read_object_file() have been tightened to react to errors. (merge 568459bf5e js/check-null-from-read-object-file later to maint). * Other code cleanup, docfix, build fix, etc. (merge 5aea3955bc rj/clarify-branch-doc-m later to maint). (merge 9cce3be2df bk/bisect-doc-fix later to maint). (merge 8430b438f6 vd/fsck-submodule-url-test later to maint). (merge 3cb4384683 jc/t0091-with-unknown-git later to maint). (merge 020456cb74 rs/receive-pack-remove-find-header later to maint). (merge bc47139f4f la/trailer-cleanups later to maint). ---------------------------------------------------------------- Changes since v2.43.0 are as follows: Achu Luma (2): unit-tests: rewrite t/helper/test-ctype.c as a unit test t2400: avoid losing exit status to pipes Alexander Shopov (1): l10n: bg.po: Updated Bulgarian translation (5610t) Andy Koppe (3): rebase: fully ignore rebase.autoSquash without -i rebase: support --autosquash without -i rebase: rewrite --(no-)autosquash documentation Antonin Delpeuch (2): merge-file: add --diff-algorithm option merge-ll: expose revision names to custom drivers Arkadii Yakovets (3): l10n: uk: v2.44 localization update l10n: uk: v2.44 update (round 2) l10n: uk: v2.44 update (round 3) Arthur Chan (1): fuzz: add new oss-fuzz fuzzer for date.c / date.h Bagas Sanjaya (1): l10n: po-id for 2.44 (round 1) Britton Leo Kerin (9): doc: use singular form of repeatable path arg doc: refer to pathspec instead of path completion: tests: always use 'master' for default initial branch name completion: bisect: complete bad, new, old, and help subcommands completion: bisect: complete custom terms and related options completion: bisect: complete missing --first-parent and - -no-checkout options completion: new function __git_complete_log_opts completion: bisect: complete log opts for visualize subcommand completion: bisect: recognize but do not complete view subcommand Carlo Marcelo Arenas Belón (1): ci: update FreeBSD cirrus job Chandra Pratap (4): sideband.c: remove redundant 'NEEDSWORK' tag write-or-die: make GIT_FLUSH a Boolean environment variable t4129: prevent loss of exit code due to the use of pipes tests: move t0009-prio-queue.sh to the new unit testing framework Elijah Newren (32): t6429: remove switching aspects of fast-rebase replay: introduce new builtin replay: start using parse_options API replay: die() instead of failing assert() replay: introduce pick_regular_commit() replay: change rev walking options replay: add an important FIXME comment about gpg signing replay: remove progress and info output replay: remove HEAD related sanity check replay: make it a minimal server side command replay: use standard revision ranges replay: add --advance or 'cherry-pick' mode replay: add --contained to rebase contained branches replay: stop assuming replayed branches do not diverge completion: squelch stray errors in sparse-checkout completion completion: fix logic for determining whether cone mode is active completion: avoid misleading completions in cone mode completion: avoid user confusion in non-cone mode treewide: remove unnecessary includes from header files treewide: remove unnecessary includes in source files archive.h: remove unnecessary include blame.h: remove unnecessary includes fsmonitor--daemon.h: remove unnecessary includes http.h: remove unnecessary include line-log.h: remove unnecessary include pkt-line.h: remove unnecessary include submodule-config.h: remove unnecessary include trace2/tr2_tls.h: remove unnecessary include treewide: add direct includes currently only pulled in transitively treewide: remove unnecessary includes in source files sparse-checkout: be consistent with end of options markers diffcore-delta: avoid ignoring final 'line' of file Emir SARI (1): l10n: tr: Update Turkish translations for 2.44 Eric Sunshine (1): git-add.txt: add missing short option -A to synopsis Ghanshyam Thakkar (4): t7501: add tests for --include and --only t7501: add tests for --amend --signoff t0024: avoid losing exit status to pipes t0024: style fix Illia Bobyr (1): rebase: clarify --reschedule-failed-exec default James Touton (1): git-p4: use raw string literals for regular expressions Jean-Noël Avila (3): doc: enforce dashes in placeholders doc: enforce placeholders in documentation l10n: fr.po: v2.44.0 round 3 Jeff Hostetler (4): trace2: fix signature of trace2_def_param() macro t0211: test URL redacting in PERF format t0212: test URL redacting in EVENT format sparse-index: pass string length to index_file_exists() Jeff King (39): commit-graph: handle overflow in chunk_size checks midx: check consistency of fanout table commit-graph: drop redundant call to "lite" verification commit-graph: clarify missing-chunk error messages commit-graph: abort as soon as we see a bogus chunk commit-graph: use fanout value for graph size commit-graph: check order while reading fanout chunk commit-graph: drop verify_commit_graph_lite() commit-graph: mark chunk error messages for translation parse-options: decouple "--end-of-options" and "--" bisect: always clean on reset config: handle NULL value when parsing non-bools setup: handle NULL value when parsing extensions trace2: handle NULL values in tr2_sysenv config callback help: handle NULL value for alias.* config submodule: handle NULL value when parsing submodule.*.branch trailer: handle NULL value when parsing trailer-specific config fsck: handle NULL value when parsing message config config: reject bogus values for core.checkstat git_xmerge_config(): prefer error() to die() imap-send: don't use git_die_config() inside callback config: use config_error_nonbool() instead of custom messages diff: give more detailed messages for bogus diff.* config config: use git_config_string() for core.checkRoundTripEncoding push: drop confusing configset/callback redundancy gpg-interface: drop pointless config_error_nonbool() checks sequencer: simplify away extra git_config_string() call mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair() t5100: make rfc822 comment test more careful mailinfo: avoid recursion when unquoting From headers t1006: add tests for %(objectsize:disk) commit-graph: retain commit slab when closing NULL commit_graph index-pack: spawn threads atomically transport-helper: re-examine object dir after fetching diff: handle NULL meta-info when spawning external diff Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN Makefile: remove UNIT_TEST_BIN directory with "make clean" t/Makefile: get UNIT_TESTS list from C sources trailer: fix comment/cut-line regression with opts->no_divider Jiang Xin (14): t5574: test porcelain output of atomic fetch fetch: no redundant error message for atomic fetch test-pkt-line: add option parser for unpack-sideband pkt-line: memorize sideband fragment in reader pkt-line: do not chomp newlines for sideband messages transport-helper: no connection restriction in connect_helper remote-curl: supports git-upload-archive service transport-helper: protocol v2 supports upload-archive http-backend: new rpc-service for git-upload-archive transport-helper: call do_take_over() in connect_helper transport-helper: call do_take_over() in process_connect diff: mark param1 and param2 as placeholders l10n: ci: remove unused param for add-pr-comment@v2 l10n: ci: disable cache for setup-go to suppress warnings Joanna Wang (2): attr: enable attr pathspec magic for git-add and git-stash attr: add builtin objectmode values support Johannes Schindelin (15): artifacts-tar: when including `.dll` files, don't forget the unit-tests cmake: fix typo in variable name cmake: also build unit tests cmake: use test names instead of full paths unit-tests: do not mistake `.pdb` files for being executable cmake: handle also unit tests unit-tests: do show relative file paths ci: avoid running the test suite _twice_ packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration trace2: redact passwords from https:// URLs by default win32: special-case `ENOSPC` when writing to a pipe Always check the return value of `repo_read_object_file()` l10n: bump Actions versions in l10n.yml ci: bump remaining outdated Actions versions ci(linux32): add a note about Actions that must not be updated John Cai (15): t3210: move to t0601 remove REFFILES prerequisite for some tests in t1405 and t2017 t1414: convert test to use Git commands instead of writing refs manually t1404: move reffiles specific tests to t0600 t1405: move reffiles specific tests to t0601 t1406: move reffiles specific tests to t0600 t1410: move reffiles specific tests to t0600 t1415: move reffiles specific tests to t0601 t1503: move reffiles specific tests to t0600 t3903: make drop stash test ref backend agnostic t4202: move reffiles specific tests to t0600 t5312: move reffiles specific tests to t0601 reftable: honor core.fsync index-pack: test and document --strict==... index-pack: --fsck-objects to take an optional argument for fsck msgs Jordi Mas (1): l10n: Update Catalan translation Josh Brobst (1): builtin/reflog.c: fix dry-run option short name Josh Soref (13): doc: update links to current pages doc: switch links to https doc: update links for andre-simon.de doc: refer to internet archive CodingGuidelines: move period inside parentheses CodingGuidelines: write punctuation marks SubmittingPatches: drop ref to "What's in git.git" SubmittingPatches: discourage new trailers SubmittingPatches: update extra tags list SubmittingPatches: provide tag naming advice SubmittingPatches: clarify GitHub visual SubmittingPatches: clarify GitHub artifact format SubmittingPatches: hyphenate non-ASCII Josh Steadmon (4): unit tests: add a project plan document ci: run unit tests in CI fuzz: fix fuzz test build rules ci: build and run minimal fuzzers in GitHub CI Julian Prein (1): hooks--pre-commit: detect non-ASCII when renaming Junio C Hamano (58): cache: add fake_lstat() diff-lib: fix check_removed() when fsmonitor is active checkout: refactor die_if_checked_out() caller orphan/unborn: add to the glossary and use them consistently orphan/unborn: fix use of 'orphan' in end-user facing messages revision: parse integer arguments to --max-count, --skip, etc., more carefully Start the 2.44 cycle checkout: forbid "-B " from touching a branch used elsewhere git.txt: HEAD is not that special git-bisect.txt: BISECT_HEAD is not that special refs.h: HEAD is not that special docs: AUTO_MERGE is not that special docs: MERGE_AUTOSTASH is not that special doc: format.notes specify a ref under refs/notes/ hierarchy The second batch remote.h: retire CAS_OPT_NAME The third batch archive: "--list" does not take further options sparse-checkout: use default patterns for 'set' only !stdin The fourth batch The fifth batch The sixth batch messages: mark some strings with "up-to-date" not to touch The seventh batch The eighth batch The ninth batch Docs: [email protected] has been decomissioned CoC: whitespace fix ls-files: avoid the verb "deprecate" for individual options The tenth batch builtin/worktree: comment style fixes merge-ort.c: comment style fix reftable/pq_test: comment style fix The eleventh batch t0091: allow test in a repository without tags The twelfth batch Makefile: reduce repetitive library paths Makefile: simplify output of the libpath_template The thirteenth batch GitHub Actions: update to checkout@v4 GitHub Actions: update to github-script@v7 t/Makefile: say the default target upfront The fourteenth batch tag: fix sign_buffer() call to create a signed tag bisect: document "terms" subcommand more fully bisect: document command line arguments for "bisect start" ssh signing: signal an error with a negative return value The fifteenth batch Git 2.43.1 Git 2.44-rc0 unit-tests: do show relative file paths on non-Windows, too A few more topics before -rc1 write-or-die: fix the polarity of GIT_FLUSH environment variable A few more fixes before -rc1 Git 2.43.2 Hopefully the last batch of fixes before 2.44 final Git 2.44-rc2 Git 2.43.3 Justin Tobler (2): t1401: remove lockfile creation t5541: remove lockfile creation Kristoffer Haugsbakk (5): config: format newlines config: rename global config function config: factor out global config file retrieval maintenance: use XDG config if it exists config: add back code comment Kyle Lippincott (1): setup: allow cwd=.git w/ bareRepository=explicit Linus Arver (4): commit: ignore_non_trailer computes number of bytes to ignore trailer: find the end of the log message trailer: use offsets for trailer_start/trailer_end strvec: use correct member name in comments M Hickford (1): credential/wincred: store oauth_refresh_token Maarten van der Schrieck (1): Documentation: fix statement about rebase.instructionFormat Marcel Krause (1): doc: make the gitfile syntax easier to discover Marcelo Roberto Jimenez (1): gitweb: die when a configuration file cannot be read Michael Lohmann (2): Documentation/git-merge.txt: fix reference to synopsis Documentation/git-merge.txt: use backticks for command wrapping Nikolay Borisov (1): rebase: fix documentation about used shell in -x Nikolay Edigaryev (1): rev-list-options: fix off-by-one in '--filter=blob:limit=' explainer Patrick Steinhardt (139): t: allow skipping expected object ID in `ref-store update-ref` t: convert tests to not write references via the filesystem t: convert tests to not access symrefs via the filesystem t: convert tests to not access reflog via the filesystem t1450: convert tests to remove worktrees via git-worktree(1) t4207: delete replace references via git-update-ref(1) t7300: assert exact states of repo t7900: assert the absence of refs via git-for-each-ref(1) t: mark several tests that assume the files backend with REFFILES ci: reorder definitions for grouping functions ci: make grouping setup more generic ci: group installation of Docker dependencies ci: split out logic to set up failed test artifacts ci: unify setup of some environment variables ci: squelch warnings when testing with unusable Git repo ci: install test dependencies for linux-musl ci: add support for GitLab CI t/lib-httpd: dynamically detect httpd and modules path t/lib-httpd: stop using legacy crypt(3) for authentication t9164: fix inability to find basename(1) in Subversion hooks global: convert trivial usages of `test -a/-o ` contrib/subtree: stop using `-o` to test for number of args contrib/subtree: convert subtree type check to use case statement Makefile: stop using `test -o` when unlinking duplicate executables t5510: ensure that the packed-refs file needs locking refs/files: use transactions to delete references refs: deduplicate code to delete references refs: remove `delete_refs` callback from backends commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default t0410: mark tests to require the reffiles backend t1400: split up generic reflog tests from the reffile-specific ones t1401: stop treating FETCH_HEAD as real reference t1410: use test-tool to create empty reflog t1417: make `reflog --updateref` tests backend agnostic t3310: stop checking for reference existence via `test -f` t4013: simplify magic parsing and drop "failure" t5401: speed up creation of many branches t5551: stop writing packed-refs directly t6301: write invalid object ID via `test-tool ref-store` reftable: wrap EXPECT macros in do/while reftable: handle interrupted reads reftable: handle interrupted writes reftable/stack: verify that `reftable_stack_add()` uses auto-compaction reftable/stack: perform auto-compaction with transactional interface reftable/stack: reuse buffers when reloading stack reftable/stack: fix stale lock when dying reftable/stack: fix use of unseeded randomness reftable/merged: reuse buffer to compute record keys reftable/block: introduce macro to initialize `struct block_iter` reftable/block: reuse buffer to compute record keys setup: extract function to create the refdb setup: allow skipping creation of the refdb remote-curl: rediscover repository when fetching refs builtin/clone: fix bundle URIs with mismatching object formats builtin/clone: set up sparse checkout later builtin/clone: skip reading HEAD when retrieving remote builtin/clone: create the refdb with the correct object format wt-status: read HEAD and ORIG_HEAD via the refdb refs: propagate errno when reading special refs fails refs: complete list of special refs bisect: consistently write BISECT_EXPECTED_REV via the refdb tests: adjust whitespace in chainlint expectations t: introduce DEFAULT_REPO_FORMAT prereq worktree: skip reading HEAD when repairing worktrees refs: refactor logic to look up storage backends setup: start tracking ref storage format setup: set repository's formats on init setup: introduce "extensions.refStorage" extension setup: introduce GIT_DEFAULT_REF_FORMAT envvar t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar builtin/rev-parse: introduce `--show-ref-format` flag builtin/init: introduce `--ref-format=` value flag builtin/clone: introduce `--ref-format=` value flag t9500: write "extensions.refstorage" into config reftable/stack: do not overwrite errors when compacting reftable/stack: do not auto-compact twice in `reftable_stack_add()` reftable/writer: fix index corruption when writing multiple indices reftable/record: constify some parts of the interface reftable/record: store "val1" hashes as static arrays reftable/record: store "val2" hashes as static arrays reftable/merged: really reuse buffers to compute record keys reftable/merged: transfer ownership of records when iterating git-prompt: stop manually parsing HEAD with unknown ref formats ci: add job performing static analysis on GitLab CI refs: prepare `refs_init_db()` for initializing worktree refs setup: move creation of "refs/" into the files backend refs/files: skip creation of "refs/{heads,tags}" for worktrees builtin/worktree: move setup of commondir file earlier worktree: expose interface to look up worktree by name builtin/worktree: create refdb via ref backend reftable/stack: refactor stack reloading to have common exit path reftable/stack: refactor reloading to use file descriptor reftable/stack: use stat info to avoid re-reading stack list reftable/blocksource: refactor code to match our coding style reftable/blocksource: use mmap to read tables git-p4: stop reaching into the refdb commit-graph: fix memory leak when not writing graph completion: discover repo path in `__git_pseudoref_exists ()` t9902: verify that completion does not print anything completion: improve existence check for pseudo-refs completion: silence pseudoref existence check completion: treat dangling symrefs as existing pseudorefs t7527: decrease likelihood of racing with fsmonitor daemon Makefile: detect new Homebrew location for ARM-based Macs ci: handle TEST_OUTPUT_DIRECTORY when printing test failures ci: make p4 setup on macOS more robust ci: add macOS jobs to GitLab CI reftable/stack: unconditionally reload stack after commit reftable/stack: fix race in up-to-date check sequencer: clean up pseudo refs with REF_NO_DEREF sequencer: delete REBASE_HEAD in correct repo when picking commits refs: convert AUTO_MERGE to become a normal pseudo-ref sequencer: introduce functions to handle autostashes via refs refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref refs: redefine special refs Documentation: add "special refs" to the glossary reftable/stack: adjust permissions of compacted tables t1300: make tests more robust with non-default ref backends t1301: mark test for `core.sharedRepository` as reffiles specific t1302: make tests more robust with new extensions t1419: mark test suite as files-backend specific t5526: break test submodule differently t: mark tests regarding git-pack-refs(1) to be backend specific reftable/stack: fsync "tables.list" during compaction reftable/reader: be more careful about errors in indexed seeks reftable/writer: use correct type to iterate through index entries reftable/writer: simplify writing index records reftable/writer: fix writing multi-level indices reftable: document reading and writing indices builtin/stash: report failure to write to index reftable: introduce macros to grow arrays reftable: introduce macros to allocate arrays reftable/stack: fix parameter validation when compacting range reftable/stack: index segments with `size_t` reftable/stack: use `size_t` to track stack slices during compaction reftable/stack: use `size_t` to track stack length reftable/merged: refactor seeking of records reftable/merged: refactor initialization of iterators reftable/record: improve semantics when initializing records Peter Krefting (1): l10n: sv.po: Update Swedish translation Philippe Blain (11): completion: complete missing rev-list options completion: complete --patch-with-raw completion: complete --encoding completion: complete missing 'git log' options ci(github): also skip logs of broken test cases imap-send: add missing "strbuf.h" include under NO_CURL .github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs completion: add space after config variable names also in Bash 3 completion: complete 'submodule.*' config variables completion: add and use __git_compute_first_level_config_vars_for_section completion: add and use __git_compute_second_level_config_vars_for_section Phillip Wood (4): unit tests: add TAP unit test framework show-ref --verify: accept pseudorefs t1400: use show-ref to check pseudorefs prune: mark rebase autostash and orig-head as reachable Ralf Thielow (1): l10n: Update German translation René Scharfe (21): column: release strbuf and string_list after use i18n: factorize even more 'incompatible options' messages push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror repack: use die_for_incompatible_opt3() for -A/-k/--cruft revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs revision, rev-parse: factorize incompatibility messages about - -exclude-hidden clean: factorize incompatibility message worktree: standardize incompatibility messages worktree: simplify incompatibility message for --orphan and commit-ish show-ref: use die_for_incompatible_opt3() t6300: avoid hard-coding object sizes git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool rebase: use strvec_pushf() for format-patch revisions fast-import: use mem_pool_calloc() mem-pool: fix big allocations mem-pool: simplify alignment calculation t1006: prefer shell loop to awk for packed object sizes parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN parse-options: simplify positivation handling receive-pack: use find_commit_header() in check_cert_push_options() receive-pack: use find_commit_header() in check_nonce() Rubén Justo (10): status: fix branch shown when not only bisecting branch: clarify term advice: sort the advice related lists advice: fix an unexpected leading space branch: make the advice to force-deleting a conditional one advice: allow disabling the automatic hint in advise_if_enabled() t5332: mark as leak-free t6113: mark as leak-free test-lib: check for TEST_PASSES_SANITIZE_LEAK t0080: mark as leak-free Sam Delmerico (1): push: region_leave trace for negotiate_using_fetch Shreyansh Paliwal (1): test-lib-functions.sh: fix test_grep fail message wording Simon Ser (1): format-patch: fix ignored encode_email_headers for cover letter Stan Hu (2): completion: refactor existence checks for pseudorefs completion: support pseudoref existence checks for reftables Sören Krecker (1): mingw: give more details about unsafe directory's ownership Tamino Bauknecht (1): fetch: add new config option fetch.all Taylor Blau (29): pack-objects: free packing_data in more places pack-bitmap-write: deep-clear the `bb_commit` slab pack-bitmap: plug leak in find_objects() midx: factor out `fill_pack_info()` midx: implement `BTMP` chunk midx: implement `midx_locate_pack()` pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions ewah: implement `bitmap_is_empty()` pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()` pack-objects: parameterize pack-reuse routines over a single pack pack-objects: keep track of `pack_start` for each reuse pack pack-objects: pass `bitmapped_pack`'s to pack-reuse functions pack-objects: prepare `write_reused_pack()` for multi-pack reuse pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse pack-objects: include number of packs reused in output git-compat-util.h: implement checked size_t to uint32_t conversion midx: implement `midx_preferred_pack()` pack-revindex: factor out `midx_key_to_pack_pos()` helper pack-revindex: implement `midx_pair_to_pack_pos()` pack-bitmap: prepare to mark objects from multiple packs for reuse pack-objects: add tracing for various packfile metrics t/test-lib-functions.sh: implement `test_trace2_data` helper pack-objects: allow setting `pack.allowPackReuse` to "single" pack-bitmap: enable reuse from all bitmapped packs t/perf: add performance tests for multi-pack reuse pack-bitmap: drop unused `reuse_objects` t5332-multi-pack-reuse.sh: extract pack-objects helper functions pack-objects: enable multi-pack reuse via `feature.experimental` Teng Long (1): l10n: zh_CN: for git 2.44 rounds Todd Zullinger (3): perl: bump the required Perl version to 5.8.1 from 5.8.0 send-email: avoid duplicate specification warnings RelNotes: minor typo fixes in 2.44.0 draft Toon Claes (1): builtin/show-ref: treat directory as non-existing in --exists Vegard Nossum (1): sequencer: unset GIT_CHERRY_PICK_HELP for 'exec' commands Victoria Dye (15): ref-filter.c: really don't sort when using --no-sort ref-filter.h: add max_count and omit_empty to ref_format ref-filter.h: move contains caches into filter ref-filter.h: add functions for filter/format & format-only ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()' ref-filter.c: refactor to create common helper functions ref-filter.c: filter & format refs in the same callback for-each-ref: clean up documentation of --format ref-filter.c: use peeled tag for '*' format fields t/perf: add perf tests for for-each-ref submodule-config.h: move check_submodule_url test-submodule: remove command line handling for check-name t7450: test submodule urls submodule-config.c: strengthen URL fsck check ref-filter.c: sort formatted dates by byte value Yi-Jyun Pan (1): l10n: zh_TW: Git 2.44 Zach FettersMoore (1): subtree: fix split processing with multiple subtrees present [Less]
Posted about 2 months ago by Junio C Hamano
The latest maintenance release Git v2.43.3 is now available at the usual places. This is to fix another regression in previous 2.43.x release that were not in 2.43.0 and 2.43.2 did not address. The tarballs are found at: ... [More] https://www.kernel.org/pub/software/scm/git/ The following public repositories all have a copy of the 'v2.43.3' tag and the 'maint' branch that the tag points at: url = https://git.kernel.org/pub/scm/git/git url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://github.com/gitster/git ---------------------------------------------------------------- Git 2.43.3 Release Notes ======================== Relative to Git 2.43.2, this release fixes one regression that manifests while running "git commit -v --trailer". Fixes since Git 2.43.2 ---------------------- * "git commit -v --trailer=..." was broken with recent update and placed the trailer _after_ the divider line, which has been corrected. ---------------------------------------------------------------- Changes since v2.43.2 are as follows: Jeff King (1): trailer: fix comment/cut-line regression with opts->no_divider Junio C Hamano (1): Git 2.43.3 [Less]
Posted about 2 months ago by Johannes Schindelin
Dear Git users, I hereby announce that Git for Windows 2.44.0-rc2 is available from: https://github.com/git-for-windows/git/releases/tag/v2.44.0-rc2.windows.1 Changes since Git for Windows v2.43.0 (November 20th 2023) Git for Windows for ... [More] Windows v2.44 is the last version to support for Windows 7 and for Windows 8, see MSYS2's corresponding deprecation announcement (Git for Windows relies on MSYS2 for components such as Bash and Perl). Please also note that the 32-bit variant of Git for Windows is deprecated; Its last official release is planned for 2025. New Features * Comes with Git v2.44.0-rc2. * Comes with libfido2 v1.14.0. * Comes with the MSYS2 runtime (Git for Windows flavor) based on Cygwin v3.4.10. * Comes with Perl v5.38.2. * Git for Windows learned to detect and use native Windows support for ANSI sequences, which allows using 24-bit colors in terminal windows. * Comes with Git LFS v3.4.1. * The repository viewer Tig that is included in Git for Windows can now be called also directly from PowerShell/CMD. * Comes with OpenSSH v9.6.P1. * Comes with Bash v5.2.26. * Comes with GNU TLS v3.8.3. * Comes with OpenSSL v3.2.1. * Comes with cURL v8.6.0. * Comes with GNU Privacy Guard v2.4.4. Bug Fixes * The 32-bit variant of Git for Windows was missing some MSYS2 runtime updates, which was addressed; Do note 32-bit support is phased out. * The Git for Windows installer showed cut-off text in some setups. This has been fixed. * The git credential-manager --help command previously would not find a page to display in the web browser, which has been fixed. * A couple of bugs that could cause Git Bash to hang in certain scenarios were fixed. Git-2.44.0-rc2-64-bit.exe | d188ba8cb0d36fda22fa12759de00c9e23cc45f57521f05184d3cf8c36a6fec3 Git-2.44.0-rc2-32-bit.exe | 12149c903330ccae8298a6890d3eed49939393c3a806775ef0ddb27674315556 PortableGit-2.44.0-rc2-64-bit.7z.exe | 4b753124cec6aa6635001c48716b249cc43a37db10aec3f0cccfc68d6d20ac7c PortableGit-2.44.0-rc2-32-bit.7z.exe | b8cfa7ae7549a3c12a4e19fb9598e16161858075bba3df4110f0585e2476bb5a MinGit-2.44.0-rc2-64-bit.zip | 6db61b0855f4dd67770a221debea944c7a69cb8fa37acb5b1c85c10ea914464e MinGit-2.44.0-rc2-32-bit.zip | e92da5248e2165c1a25fcfce0469754cee218e8954bfe7711890d06803be1659 MinGit-2.44.0-rc2-busybox-64-bit.zip | 117839c34a0dba2323d46bf1c66172b4452c9323ab8f917266ef088aec1dc118 MinGit-2.44.0-rc2-busybox-32-bit.zip | d9820cccb91d80f46914c047f65424599cb29e87ff7a015e9fcd82b84e7b9abd Git-2.44.0-rc2-64-bit.tar.bz2 | e6346c6ca380035642334d81480f24e74dfaed56f3b8d8313df6989c7b7cad11 Git-2.44.0-rc2-32-bit.tar.bz2 | d94aee3941b289f6b1ebf20cca84165628603cce71a067c44338b20e380deaa3 Ciao, Johannes [Less]
Posted about 2 months ago by Junio C Hamano
A release candidate Git v2.44.0-rc2 is now available for testing at the usual places. It is comprised of 502 non-merge commits since v2.43.0, contributed by 85 people, 34 of which are new faces [*]. I was planning to do without -rc2 and directly go ... [More] to the final release, but there was a last-minute regression discovered, whose fix is included in this (hopefully) final release candidate. The tarballs are found at: https://www.kernel.org/pub/software/scm/git/testing/ The following public repositories all have a copy of the 'v2.44.0-rc2' tag and the 'master' branch that the tag points at: url = https://git.kernel.org/pub/scm/git/git url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://github.com/gitster/git New contributors whose contributions weren't in v2.43.0 are as follows. Welcome to the Git development community! Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin, Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang, Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott, lumynou5, Maarten van der Schrieck, Marcel Krause, Marcelo Roberto Jimenez, Michael Lohmann, moti sd, Nikolay Borisov, Nikolay Edigaryev, Ondrej Pohorelsky, Sam Delmerico, Sergey Kosukhin, Shreyansh Paliwal, Sören Krecker, Stan Hu, Tamino Bauknecht, Wilfred Hughes, Willem Verstraeten, Xiaoguang WANG, and Zach FettersMoore. Returning contributors who helped this release are as follows. Thanks for your continued support. Alexander Shopov, Andy Koppe, Arkadii Yakovets, Arthur Chan, Bagas Sanjaya, Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder, Dragan Simic, Elijah Newren, Emir SARI, Eric Sunshine, Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan Tan, Jordi Mas, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio C Hamano, Kate Golovanova, Konstantin Ryabitsev, Kristoffer Haugsbakk, Linus Arver, Matthias Aßhauer, M Hickford, Orgad Shaneh, Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting, Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker, René Scharfe, Rubén Justo, Simon Ser, SZEDER Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon Claes, Vegard Nossum, Victoria Dye, and Yi-Jyun Pan. [*] We are counting not just the authorship contribution but issue reporting, mentoring, helping and reviewing that are recorded in the commit trailers. ---------------------------------------------------------------- Git v2.44 Release Notes (draft) =============================== Backward Compatibility Notes * "git checkout -B " used to allow switching to a branch that is in use on another worktree, but this was by mistake. The users need to use "--ignore-other-worktrees" option. UI, Workflows & Features * "git add" and "git stash" learned to support the ":(attr:...)" magic pathspec. * "git rebase --autosquash" is now enabled for non-interactive rebase, but it is still incompatible with the apply backend. * Introduce "git replay", a tool meant on the server side without working tree to recreate a history. * "git merge-file" learned to take the "--diff-algorithm" option to use algorithm different from the default "myers" diff. * Command line completion (in contrib/) learned to complete path arguments to the "add/set" subcommands of "git sparse-checkout" better. * "git checkout -B []" allowed a branch that is in use in another worktree to be updated and checked out, which might be a bit unexpected. The rule has been tightened, which is a breaking change. "--ignore-other-worktrees" option is required to unbreak you, if you are used to the current behaviour that "-B" overrides the safety. * The builtin_objectmode attribute is populated for each path without adding anything in .gitattributes files, which would be useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)" to limit to executables. * "git fetch" learned to pay attention to "fetch.all" configuration variable, which pretends as if "--all" was passed from the command line when no remote parameter was given. * In addition to (rather cryptic) Security Identifiers, show username and domain in the error message when we barf on mismatch between the Git directory and the current user on Windows. * The error message given when "git branch -d branch" fails due to commits unique to the branch has been split into an error and a new conditional advice message. * When given an existing but unreadable file as a configuration file, gitweb behaved as if the file did not exist at all, but now it errors out. This is a change that may break backward compatibility. * When $HOME/.gitconfig is missing but XDG config file is available, we should write into the latter, not former. "git gc" and "git maintenance" wrote into a wrong "global config" file, which have been corrected. * Define "special ref" as a very narrow set that consists of FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to be classified as such are actually just pseudorefs. * All conditional "advice" messages show how to turn them off, which becomes repetitive. Setting advice.* configuration explicitly on now omits the instruction part. * The "disable repository discovery of a bare repository" check, triggered by setting safe.bareRepository configuration variable to 'explicit', has been loosened to exclude the ".git/" directory inside a non-bare repository from the check. So you can do "cd .git && git cmd" to run a Git command that works on a bare repository without explicitly specifying $GIT_DIR now. * The completion script (in contrib/) learned more options that can be used with "git log". * The labels on conflict markers for the common ancestor, our version, and the other version are available to custom 3-way merge driver via %S, %X, and %Y placeholders. * The write codepath for the reftable data learned to honor core.fsync configuration. * The "--fsck-objects" option of "git index-pack" now can take the optional parameter to tweak severity of different fsck errors. * The wincred credential backend has been taught to support oauth refresh token the same way as credential-cache and credential-libsecret backends. * Command line completion support (in contrib/) has been updated for "git bisect". * "git branch" and friends learned to use the formatted text as sorting key, not the underlying timestamp value, when the --sort option is used with author or committer timestamp with a format specifier (e.g., "--sort=creatordate:format:%H:%M:%S"). * The command line completion script (in contrib/) learned to complete configuration variable names better. Performance, Internal Implementation, Development Support etc. * Process to add some form of low-level unit tests has started. * Add support for GitLab CI. * "git for-each-ref --no-sort" still sorted the refs alphabetically which paid non-trivial cost. It has been redefined to show output in an unspecified order, to allow certain optimizations to take advantage of. * Simplify API implementation to delete references by eliminating duplication. * Subject approxidate() and show_date() machinery to OSS-Fuzz. * A new helper to let us pretend that we called lstat() when we know our cache_entry is up-to-date via fsmonitor. * The optimization based on fsmonitor in the "diff --cached" codepath is resurrected with the "fake-lstat" introduced earlier. * Test balloon to use C99 "bool" type from has been added. * "git clone" has been prepared to allow cloning a repository with non-default hash function into a repository that uses the reftable backend. * Streaming spans of packfile data used to be done only from a single, primary, pack in a repository with multiple packfiles. It has been extended to allow reuse from other packfiles, too. * Comment updates to help developers not to attempt to modify messages from plumbing commands that must stay constant. It might make sense to reassess the plumbing needs every few years, but that should be done as a separate effort. * Move test-ctype helper to the unit-test framework. * Instead of manually creating refs/ hierarchy on disk upon a creation of a secondary worktree, which is only usable via the files backend, use the refs API to populate it. * CI for GitLab learned to drive macOS jobs. * A few tests to "git commit -o " and "git commit -i " has been added. * Tests on ref API are moved around to prepare for reftable. * The Makefile often had to say "-L$(path) -R$(path)" that repeats the path to the same library directory for link time and runtime. A Makefile template is used to reduce such repetition. * The priority queue test has been migrated to the unit testing framework. * Setting `feature.experimental` opts the user into multi-pack reuse experiment * Squelch node.js 16 deprecation warnings from GitHub Actions CI by updating actions/github-script and actions/checkout that use node.js 20. * The mechanism to report the filename in the source code, used by the unit-test machinery, assumed that the compiler expanded __FILE__ to the path to the source given to the $(CC), but some compilers give full path, breaking the output. This has been corrected. Fixes since v2.43 ----------------- * The way CI testing used "prove" could lead to running the test suite twice needlessly, which has been corrected. * Update ref-related tests. * "git format-patch --encode-email-headers" ignored the option when preparing the cover letter, which has been corrected. * Newer versions of Getopt::Long started giving warnings against our (ab)use of it in "git send-email". Bump the minimum version requirement for Perl to 5.8.1 (from September 2002) to allow simplifying our implementation. * Earlier we stopped relying on commit-graph that (still) records information about commits that are lost from the object store, which has negative performance implications. The default has been flipped to disable this pessimization. * Stale URLs have been updated to their current counterparts (or archive.org) and HTTP links are replaced with working HTTPS links. * trace2 streams used to record the URLs that potentially embed authentication material, which has been corrected. * The sample pre-commit hook that tries to catch introduction of new paths that use potentially non-portable characters did not notice an existing path getting renamed to such a problematic path, when rename detection was enabled. * The command line parser for the "log" family of commands was too loose when parsing certain numbers, e.g., silently ignoring the extra 'q' in "git log -n 1q" without complaining, which has been tightened up. * "git $cmd --end-of-options --rev -- --path" for some $cmd failed to interpret "--rev" as a rev, and "--path" as a path. This was fixed for many programs like "reset" and "checkout". * "git bisect reset" has been taught to clean up state files and refs even when BISECT_START file is gone. * Some codepaths did not correctly parse configuration variables specified with valueless "true", which has been corrected. * Code clean-up for sanity checking of command line options for "git show-ref". * The code to parse the From e-mail header has been updated to avoid recursion. * "git fetch --atomic" issued an unnecessary empty error message, which has been corrected. * Command line completion script (in contrib/) learned to work better with the reftable backend. * "git status" is taught to show both the branch being bisected and being rebased when both are in effect at the same time. * "git archive --list extra garbage" silently ignored excess command line parameters, which has been corrected. * "git sparse-checkout set" added default patterns even when the patterns are being fed from the standard input, which has been corrected. * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did not handle "--end-of-options" correctly after a recent update. * Unlike other environment variables that took the usual true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1, which has been corrected. * Clearing in-core repository (happens during e.g., "git fetch --recurse-submodules" with commit graph enabled) made in-core commit object in an inconsistent state by discarding the necessary data from commit-graph too early, which has been corrected. * Update to a new feature recently added, "git show-ref --exists". * oss-fuzz tests are built and run in CI. (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint). * Rename detection logic ignored the final line of a file if it is an incomplete line. * GitHub CI update. (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint). * "git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * "git archive --remote=" learned to talk over the smart http (aka stateless) transport. (merge 176cd68634 jx/remote-archive-over-smart-http later to maint). * Fetching via protocol v0 over Smart HTTP transport sometimes failed to correctly auto-follow tags. (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint). * The documentation for the --exclude-per-directory option marked it as deprecated, which confused readers into thinking there may be a plan to remove it in the future, which was not our intention. (merge 0009542cab jc/ls-files-doc-update later to maint). * "git diff --no-index file1 file2" segfaulted while invoking the external diff driver, which has been corrected. * Rewrite //-comments to /* comments */ in files whose comments prevalently use the latter. * Cirrus CI jobs started breaking because we specified version of FreeBSD that is no longer available, which has been corrected. (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint). * A caller called index_file_exists() that takes a string expressed as with a wrong length, which has been corrected. (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint). * A failed "git tag -s" did not necessarily result in an error depending on the crypto backend, which has been corrected. * "git stash" sometimes was silent even when it failed due to unwritable index file, which has been corrected. * "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD", which has been corrected. * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the mechanism by flipping what yes/no means by mistake, which has been corrected. * The sequencer machinery does not use the ref API and instead records names of certain objects it needs for its correct operation in temporary files, which makes these objects susceptible to loss by garbage collection. These temporary files have been added as starting points for reachability analysis to fix this. (merge bc7f5db896 pw/gc-during-rebase later to maint). * "git cherry-pick" invoked during "git rebase -i" session lost the authorship information, which has been corrected. (merge e4301f73ff vn/rebase-with-cherry-pick-authorship later to maint). * The code paths that call repo_read_object_file() have been tightened to react to errors. (merge 568459bf5e js/check-null-from-read-object-file later to maint). * Other code cleanup, docfix, build fix, etc. (merge 5aea3955bc rj/clarify-branch-doc-m later to maint). (merge 9cce3be2df bk/bisect-doc-fix later to maint). (merge 8430b438f6 vd/fsck-submodule-url-test later to maint). (merge 3cb4384683 jc/t0091-with-unknown-git later to maint). (merge 020456cb74 rs/receive-pack-remove-find-header later to maint). (merge bc47139f4f la/trailer-cleanups later to maint). ---------------------------------------------------------------- Changes since v2.43.0 are as follows: Achu Luma (2): unit-tests: rewrite t/helper/test-ctype.c as a unit test t2400: avoid losing exit status to pipes Alexander Shopov (1): l10n: bg.po: Updated Bulgarian translation (5610t) Andy Koppe (3): rebase: fully ignore rebase.autoSquash without -i rebase: support --autosquash without -i rebase: rewrite --(no-)autosquash documentation Antonin Delpeuch (2): merge-file: add --diff-algorithm option merge-ll: expose revision names to custom drivers Arkadii Yakovets (3): l10n: uk: v2.44 localization update l10n: uk: v2.44 update (round 2) l10n: uk: v2.44 update (round 3) Arthur Chan (1): fuzz: add new oss-fuzz fuzzer for date.c / date.h Bagas Sanjaya (1): l10n: po-id for 2.44 (round 1) Britton Leo Kerin (9): doc: use singular form of repeatable path arg doc: refer to pathspec instead of path completion: tests: always use 'master' for default initial branch name completion: bisect: complete bad, new, old, and help subcommands completion: bisect: complete custom terms and related options completion: bisect: complete missing --first-parent and - -no-checkout options completion: new function __git_complete_log_opts completion: bisect: complete log opts for visualize subcommand completion: bisect: recognize but do not complete view subcommand Carlo Marcelo Arenas Belón (1): ci: update FreeBSD cirrus job Chandra Pratap (4): sideband.c: remove redundant 'NEEDSWORK' tag write-or-die: make GIT_FLUSH a Boolean environment variable t4129: prevent loss of exit code due to the use of pipes tests: move t0009-prio-queue.sh to the new unit testing framework Elijah Newren (32): t6429: remove switching aspects of fast-rebase replay: introduce new builtin replay: start using parse_options API replay: die() instead of failing assert() replay: introduce pick_regular_commit() replay: change rev walking options replay: add an important FIXME comment about gpg signing replay: remove progress and info output replay: remove HEAD related sanity check replay: make it a minimal server side command replay: use standard revision ranges replay: add --advance or 'cherry-pick' mode replay: add --contained to rebase contained branches replay: stop assuming replayed branches do not diverge completion: squelch stray errors in sparse-checkout completion completion: fix logic for determining whether cone mode is active completion: avoid misleading completions in cone mode completion: avoid user confusion in non-cone mode treewide: remove unnecessary includes from header files treewide: remove unnecessary includes in source files archive.h: remove unnecessary include blame.h: remove unnecessary includes fsmonitor--daemon.h: remove unnecessary includes http.h: remove unnecessary include line-log.h: remove unnecessary include pkt-line.h: remove unnecessary include submodule-config.h: remove unnecessary include trace2/tr2_tls.h: remove unnecessary include treewide: add direct includes currently only pulled in transitively treewide: remove unnecessary includes in source files sparse-checkout: be consistent with end of options markers diffcore-delta: avoid ignoring final 'line' of file Emir SARI (1): l10n: tr: Update Turkish translations for 2.44 Eric Sunshine (1): git-add.txt: add missing short option -A to synopsis Ghanshyam Thakkar (4): t7501: add tests for --include and --only t7501: add tests for --amend --signoff t0024: avoid losing exit status to pipes t0024: style fix Illia Bobyr (1): rebase: clarify --reschedule-failed-exec default James Touton (1): git-p4: use raw string literals for regular expressions Jean-Noël Avila (3): doc: enforce dashes in placeholders doc: enforce placeholders in documentation l10n: fr.po: v2.44.0 round 3 Jeff Hostetler (4): trace2: fix signature of trace2_def_param() macro t0211: test URL redacting in PERF format t0212: test URL redacting in EVENT format sparse-index: pass string length to index_file_exists() Jeff King (39): commit-graph: handle overflow in chunk_size checks midx: check consistency of fanout table commit-graph: drop redundant call to "lite" verification commit-graph: clarify missing-chunk error messages commit-graph: abort as soon as we see a bogus chunk commit-graph: use fanout value for graph size commit-graph: check order while reading fanout chunk commit-graph: drop verify_commit_graph_lite() commit-graph: mark chunk error messages for translation parse-options: decouple "--end-of-options" and "--" bisect: always clean on reset config: handle NULL value when parsing non-bools setup: handle NULL value when parsing extensions trace2: handle NULL values in tr2_sysenv config callback help: handle NULL value for alias.* config submodule: handle NULL value when parsing submodule.*.branch trailer: handle NULL value when parsing trailer-specific config fsck: handle NULL value when parsing message config config: reject bogus values for core.checkstat git_xmerge_config(): prefer error() to die() imap-send: don't use git_die_config() inside callback config: use config_error_nonbool() instead of custom messages diff: give more detailed messages for bogus diff.* config config: use git_config_string() for core.checkRoundTripEncoding push: drop confusing configset/callback redundancy gpg-interface: drop pointless config_error_nonbool() checks sequencer: simplify away extra git_config_string() call mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair() t5100: make rfc822 comment test more careful mailinfo: avoid recursion when unquoting From headers t1006: add tests for %(objectsize:disk) commit-graph: retain commit slab when closing NULL commit_graph index-pack: spawn threads atomically transport-helper: re-examine object dir after fetching diff: handle NULL meta-info when spawning external diff Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN Makefile: remove UNIT_TEST_BIN directory with "make clean" t/Makefile: get UNIT_TESTS list from C sources trailer: fix comment/cut-line regression with opts->no_divider Jiang Xin (14): t5574: test porcelain output of atomic fetch fetch: no redundant error message for atomic fetch test-pkt-line: add option parser for unpack-sideband pkt-line: memorize sideband fragment in reader pkt-line: do not chomp newlines for sideband messages transport-helper: no connection restriction in connect_helper remote-curl: supports git-upload-archive service transport-helper: protocol v2 supports upload-archive http-backend: new rpc-service for git-upload-archive transport-helper: call do_take_over() in connect_helper transport-helper: call do_take_over() in process_connect diff: mark param1 and param2 as placeholders l10n: ci: remove unused param for add-pr-comment@v2 l10n: ci: disable cache for setup-go to suppress warnings Joanna Wang (2): attr: enable attr pathspec magic for git-add and git-stash attr: add builtin objectmode values support Johannes Schindelin (15): artifacts-tar: when including `.dll` files, don't forget the unit-tests cmake: fix typo in variable name cmake: also build unit tests cmake: use test names instead of full paths unit-tests: do not mistake `.pdb` files for being executable cmake: handle also unit tests unit-tests: do show relative file paths ci: avoid running the test suite _twice_ packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration trace2: redact passwords from https:// URLs by default win32: special-case `ENOSPC` when writing to a pipe Always check the return value of `repo_read_object_file()` l10n: bump Actions versions in l10n.yml ci: bump remaining outdated Actions versions ci(linux32): add a note about Actions that must not be updated John Cai (15): t3210: move to t0601 remove REFFILES prerequisite for some tests in t1405 and t2017 t1414: convert test to use Git commands instead of writing refs manually t1404: move reffiles specific tests to t0600 t1405: move reffiles specific tests to t0601 t1406: move reffiles specific tests to t0600 t1410: move reffiles specific tests to t0600 t1415: move reffiles specific tests to t0601 t1503: move reffiles specific tests to t0600 t3903: make drop stash test ref backend agnostic t4202: move reffiles specific tests to t0600 t5312: move reffiles specific tests to t0601 reftable: honor core.fsync index-pack: test and document --strict==... index-pack: --fsck-objects to take an optional argument for fsck msgs Jordi Mas (1): l10n: Update Catalan translation Josh Brobst (1): builtin/reflog.c: fix dry-run option short name Josh Soref (13): doc: update links to current pages doc: switch links to https doc: update links for andre-simon.de doc: refer to internet archive CodingGuidelines: move period inside parentheses CodingGuidelines: write punctuation marks SubmittingPatches: drop ref to "What's in git.git" SubmittingPatches: discourage new trailers SubmittingPatches: update extra tags list SubmittingPatches: provide tag naming advice SubmittingPatches: clarify GitHub visual SubmittingPatches: clarify GitHub artifact format SubmittingPatches: hyphenate non-ASCII Josh Steadmon (4): unit tests: add a project plan document ci: run unit tests in CI fuzz: fix fuzz test build rules ci: build and run minimal fuzzers in GitHub CI Julian Prein (1): hooks--pre-commit: detect non-ASCII when renaming Junio C Hamano (57): cache: add fake_lstat() diff-lib: fix check_removed() when fsmonitor is active checkout: refactor die_if_checked_out() caller orphan/unborn: add to the glossary and use them consistently orphan/unborn: fix use of 'orphan' in end-user facing messages revision: parse integer arguments to --max-count, --skip, etc., more carefully Start the 2.44 cycle checkout: forbid "-B " from touching a branch used elsewhere git.txt: HEAD is not that special git-bisect.txt: BISECT_HEAD is not that special refs.h: HEAD is not that special docs: AUTO_MERGE is not that special docs: MERGE_AUTOSTASH is not that special doc: format.notes specify a ref under refs/notes/ hierarchy The second batch remote.h: retire CAS_OPT_NAME The third batch archive: "--list" does not take further options sparse-checkout: use default patterns for 'set' only !stdin The fourth batch The fifth batch The sixth batch messages: mark some strings with "up-to-date" not to touch The seventh batch The eighth batch The ninth batch Docs: [email protected] has been decomissioned CoC: whitespace fix ls-files: avoid the verb "deprecate" for individual options The tenth batch builtin/worktree: comment style fixes merge-ort.c: comment style fix reftable/pq_test: comment style fix The eleventh batch t0091: allow test in a repository without tags The twelfth batch Makefile: reduce repetitive library paths Makefile: simplify output of the libpath_template The thirteenth batch GitHub Actions: update to checkout@v4 GitHub Actions: update to github-script@v7 t/Makefile: say the default target upfront The fourteenth batch tag: fix sign_buffer() call to create a signed tag bisect: document "terms" subcommand more fully bisect: document command line arguments for "bisect start" ssh signing: signal an error with a negative return value The fifteenth batch Git 2.43.1 Git 2.44-rc0 unit-tests: do show relative file paths on non-Windows, too A few more topics before -rc1 write-or-die: fix the polarity of GIT_FLUSH environment variable A few more fixes before -rc1 Git 2.43.2 Hopefully the last batch of fixes before 2.44 final Git 2.44-rc2 Justin Tobler (2): t1401: remove lockfile creation t5541: remove lockfile creation Kristoffer Haugsbakk (5): config: format newlines config: rename global config function config: factor out global config file retrieval maintenance: use XDG config if it exists config: add back code comment Kyle Lippincott (1): setup: allow cwd=.git w/ bareRepository=explicit Linus Arver (4): commit: ignore_non_trailer computes number of bytes to ignore trailer: find the end of the log message trailer: use offsets for trailer_start/trailer_end strvec: use correct member name in comments M Hickford (1): credential/wincred: store oauth_refresh_token Maarten van der Schrieck (1): Documentation: fix statement about rebase.instructionFormat Marcel Krause (1): doc: make the gitfile syntax easier to discover Marcelo Roberto Jimenez (1): gitweb: die when a configuration file cannot be read Michael Lohmann (2): Documentation/git-merge.txt: fix reference to synopsis Documentation/git-merge.txt: use backticks for command wrapping Nikolay Borisov (1): rebase: fix documentation about used shell in -x Nikolay Edigaryev (1): rev-list-options: fix off-by-one in '--filter=blob:limit=' explainer Patrick Steinhardt (139): t: allow skipping expected object ID in `ref-store update-ref` t: convert tests to not write references via the filesystem t: convert tests to not access symrefs via the filesystem t: convert tests to not access reflog via the filesystem t1450: convert tests to remove worktrees via git-worktree(1) t4207: delete replace references via git-update-ref(1) t7300: assert exact states of repo t7900: assert the absence of refs via git-for-each-ref(1) t: mark several tests that assume the files backend with REFFILES ci: reorder definitions for grouping functions ci: make grouping setup more generic ci: group installation of Docker dependencies ci: split out logic to set up failed test artifacts ci: unify setup of some environment variables ci: squelch warnings when testing with unusable Git repo ci: install test dependencies for linux-musl ci: add support for GitLab CI t/lib-httpd: dynamically detect httpd and modules path t/lib-httpd: stop using legacy crypt(3) for authentication t9164: fix inability to find basename(1) in Subversion hooks global: convert trivial usages of `test -a/-o ` contrib/subtree: stop using `-o` to test for number of args contrib/subtree: convert subtree type check to use case statement Makefile: stop using `test -o` when unlinking duplicate executables t5510: ensure that the packed-refs file needs locking refs/files: use transactions to delete references refs: deduplicate code to delete references refs: remove `delete_refs` callback from backends commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default t0410: mark tests to require the reffiles backend t1400: split up generic reflog tests from the reffile-specific ones t1401: stop treating FETCH_HEAD as real reference t1410: use test-tool to create empty reflog t1417: make `reflog --updateref` tests backend agnostic t3310: stop checking for reference existence via `test -f` t4013: simplify magic parsing and drop "failure" t5401: speed up creation of many branches t5551: stop writing packed-refs directly t6301: write invalid object ID via `test-tool ref-store` reftable: wrap EXPECT macros in do/while reftable: handle interrupted reads reftable: handle interrupted writes reftable/stack: verify that `reftable_stack_add()` uses auto-compaction reftable/stack: perform auto-compaction with transactional interface reftable/stack: reuse buffers when reloading stack reftable/stack: fix stale lock when dying reftable/stack: fix use of unseeded randomness reftable/merged: reuse buffer to compute record keys reftable/block: introduce macro to initialize `struct block_iter` reftable/block: reuse buffer to compute record keys setup: extract function to create the refdb setup: allow skipping creation of the refdb remote-curl: rediscover repository when fetching refs builtin/clone: fix bundle URIs with mismatching object formats builtin/clone: set up sparse checkout later builtin/clone: skip reading HEAD when retrieving remote builtin/clone: create the refdb with the correct object format wt-status: read HEAD and ORIG_HEAD via the refdb refs: propagate errno when reading special refs fails refs: complete list of special refs bisect: consistently write BISECT_EXPECTED_REV via the refdb tests: adjust whitespace in chainlint expectations t: introduce DEFAULT_REPO_FORMAT prereq worktree: skip reading HEAD when repairing worktrees refs: refactor logic to look up storage backends setup: start tracking ref storage format setup: set repository's formats on init setup: introduce "extensions.refStorage" extension setup: introduce GIT_DEFAULT_REF_FORMAT envvar t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar builtin/rev-parse: introduce `--show-ref-format` flag builtin/init: introduce `--ref-format=` value flag builtin/clone: introduce `--ref-format=` value flag t9500: write "extensions.refstorage" into config reftable/stack: do not overwrite errors when compacting reftable/stack: do not auto-compact twice in `reftable_stack_add()` reftable/writer: fix index corruption when writing multiple indices reftable/record: constify some parts of the interface reftable/record: store "val1" hashes as static arrays reftable/record: store "val2" hashes as static arrays reftable/merged: really reuse buffers to compute record keys reftable/merged: transfer ownership of records when iterating git-prompt: stop manually parsing HEAD with unknown ref formats ci: add job performing static analysis on GitLab CI refs: prepare `refs_init_db()` for initializing worktree refs setup: move creation of "refs/" into the files backend refs/files: skip creation of "refs/{heads,tags}" for worktrees builtin/worktree: move setup of commondir file earlier worktree: expose interface to look up worktree by name builtin/worktree: create refdb via ref backend reftable/stack: refactor stack reloading to have common exit path reftable/stack: refactor reloading to use file descriptor reftable/stack: use stat info to avoid re-reading stack list reftable/blocksource: refactor code to match our coding style reftable/blocksource: use mmap to read tables git-p4: stop reaching into the refdb commit-graph: fix memory leak when not writing graph completion: discover repo path in `__git_pseudoref_exists ()` t9902: verify that completion does not print anything completion: improve existence check for pseudo-refs completion: silence pseudoref existence check completion: treat dangling symrefs as existing pseudorefs t7527: decrease likelihood of racing with fsmonitor daemon Makefile: detect new Homebrew location for ARM-based Macs ci: handle TEST_OUTPUT_DIRECTORY when printing test failures ci: make p4 setup on macOS more robust ci: add macOS jobs to GitLab CI reftable/stack: unconditionally reload stack after commit reftable/stack: fix race in up-to-date check sequencer: clean up pseudo refs with REF_NO_DEREF sequencer: delete REBASE_HEAD in correct repo when picking commits refs: convert AUTO_MERGE to become a normal pseudo-ref sequencer: introduce functions to handle autostashes via refs refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref refs: redefine special refs Documentation: add "special refs" to the glossary reftable/stack: adjust permissions of compacted tables t1300: make tests more robust with non-default ref backends t1301: mark test for `core.sharedRepository` as reffiles specific t1302: make tests more robust with new extensions t1419: mark test suite as files-backend specific t5526: break test submodule differently t: mark tests regarding git-pack-refs(1) to be backend specific reftable/stack: fsync "tables.list" during compaction reftable/reader: be more careful about errors in indexed seeks reftable/writer: use correct type to iterate through index entries reftable/writer: simplify writing index records reftable/writer: fix writing multi-level indices reftable: document reading and writing indices builtin/stash: report failure to write to index reftable: introduce macros to grow arrays reftable: introduce macros to allocate arrays reftable/stack: fix parameter validation when compacting range reftable/stack: index segments with `size_t` reftable/stack: use `size_t` to track stack slices during compaction reftable/stack: use `size_t` to track stack length reftable/merged: refactor seeking of records reftable/merged: refactor initialization of iterators reftable/record: improve semantics when initializing records Peter Krefting (1): l10n: sv.po: Update Swedish translation Philippe Blain (11): completion: complete missing rev-list options completion: complete --patch-with-raw completion: complete --encoding completion: complete missing 'git log' options ci(github): also skip logs of broken test cases imap-send: add missing "strbuf.h" include under NO_CURL .github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs completion: add space after config variable names also in Bash 3 completion: complete 'submodule.*' config variables completion: add and use __git_compute_first_level_config_vars_for_section completion: add and use __git_compute_second_level_config_vars_for_section Phillip Wood (4): unit tests: add TAP unit test framework show-ref --verify: accept pseudorefs t1400: use show-ref to check pseudorefs prune: mark rebase autostash and orig-head as reachable Ralf Thielow (1): l10n: Update German translation René Scharfe (21): column: release strbuf and string_list after use i18n: factorize even more 'incompatible options' messages push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror repack: use die_for_incompatible_opt3() for -A/-k/--cruft revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs revision, rev-parse: factorize incompatibility messages about - -exclude-hidden clean: factorize incompatibility message worktree: standardize incompatibility messages worktree: simplify incompatibility message for --orphan and commit-ish show-ref: use die_for_incompatible_opt3() t6300: avoid hard-coding object sizes git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool rebase: use strvec_pushf() for format-patch revisions fast-import: use mem_pool_calloc() mem-pool: fix big allocations mem-pool: simplify alignment calculation t1006: prefer shell loop to awk for packed object sizes parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN parse-options: simplify positivation handling receive-pack: use find_commit_header() in check_cert_push_options() receive-pack: use find_commit_header() in check_nonce() Rubén Justo (10): status: fix branch shown when not only bisecting branch: clarify term advice: sort the advice related lists advice: fix an unexpected leading space branch: make the advice to force-deleting a conditional one advice: allow disabling the automatic hint in advise_if_enabled() t5332: mark as leak-free t6113: mark as leak-free test-lib: check for TEST_PASSES_SANITIZE_LEAK t0080: mark as leak-free Sam Delmerico (1): push: region_leave trace for negotiate_using_fetch Shreyansh Paliwal (1): test-lib-functions.sh: fix test_grep fail message wording Simon Ser (1): format-patch: fix ignored encode_email_headers for cover letter Stan Hu (2): completion: refactor existence checks for pseudorefs completion: support pseudoref existence checks for reftables Sören Krecker (1): mingw: give more details about unsafe directory's ownership Tamino Bauknecht (1): fetch: add new config option fetch.all Taylor Blau (29): pack-objects: free packing_data in more places pack-bitmap-write: deep-clear the `bb_commit` slab pack-bitmap: plug leak in find_objects() midx: factor out `fill_pack_info()` midx: implement `BTMP` chunk midx: implement `midx_locate_pack()` pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions ewah: implement `bitmap_is_empty()` pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()` pack-objects: parameterize pack-reuse routines over a single pack pack-objects: keep track of `pack_start` for each reuse pack pack-objects: pass `bitmapped_pack`'s to pack-reuse functions pack-objects: prepare `write_reused_pack()` for multi-pack reuse pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse pack-objects: include number of packs reused in output git-compat-util.h: implement checked size_t to uint32_t conversion midx: implement `midx_preferred_pack()` pack-revindex: factor out `midx_key_to_pack_pos()` helper pack-revindex: implement `midx_pair_to_pack_pos()` pack-bitmap: prepare to mark objects from multiple packs for reuse pack-objects: add tracing for various packfile metrics t/test-lib-functions.sh: implement `test_trace2_data` helper pack-objects: allow setting `pack.allowPackReuse` to "single" pack-bitmap: enable reuse from all bitmapped packs t/perf: add performance tests for multi-pack reuse pack-bitmap: drop unused `reuse_objects` t5332-multi-pack-reuse.sh: extract pack-objects helper functions pack-objects: enable multi-pack reuse via `feature.experimental` Teng Long (1): l10n: zh_CN: for git 2.44 rounds Todd Zullinger (3): perl: bump the required Perl version to 5.8.1 from 5.8.0 send-email: avoid duplicate specification warnings RelNotes: minor typo fixes in 2.44.0 draft Toon Claes (1): builtin/show-ref: treat directory as non-existing in --exists Vegard Nossum (1): sequencer: unset GIT_CHERRY_PICK_HELP for 'exec' commands Victoria Dye (15): ref-filter.c: really don't sort when using --no-sort ref-filter.h: add max_count and omit_empty to ref_format ref-filter.h: move contains caches into filter ref-filter.h: add functions for filter/format & format-only ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()' ref-filter.c: refactor to create common helper functions ref-filter.c: filter & format refs in the same callback for-each-ref: clean up documentation of --format ref-filter.c: use peeled tag for '*' format fields t/perf: add perf tests for for-each-ref submodule-config.h: move check_submodule_url test-submodule: remove command line handling for check-name t7450: test submodule urls submodule-config.c: strengthen URL fsck check ref-filter.c: sort formatted dates by byte value Yi-Jyun Pan (1): l10n: zh_TW: Git 2.44 Zach FettersMoore (1): subtree: fix split processing with multiple subtrees present [Less]
Posted 2 months ago by Johannes Schindelin
Dear Git users, I hereby announce that Git for Windows 2.44.0-rc1 is available from: https://github.com/git-for-windows/git/releases/tag/v2.44.0-rc1.windows.1 Changes since Git for Windows v2.43.0 (November 20th 2023) Git for Windows for ... [More] Windows v2.44 is the last version to support for Windows 7 and for Windows 8, see MSYS2's corresponding deprecation announcement (Git for Windows relies on MSYS2 for components such as Bash and Perl). Please also note that the 32-bit variant of Git for Windows is deprecated; Its last official release is planned for 2025. New Features * Comes with Git v2.44.0-rc1. * Comes with libfido2 v1.14.0. * Comes with the MSYS2 runtime (Git for Windows flavor) based on Cygwin v3.4.10. * Comes with Perl v5.38.2. * Git for Windows learned to detect and use native Windows support for ANSI sequences, which allows using 24-bit colors in terminal windows. * Comes with Git LFS v3.4.1. * The repository viewer Tig that is included in Git for Windows can now be called also directly from PowerShell/CMD. * Comes with OpenSSH v9.6.P1. * Comes with Bash v5.2.26. * Comes with GNU TLS v3.8.3. * Comes with OpenSSL v3.2.1. * Comes with cURL v8.6.0. * Comes with GNU Privacy Guard v2.4.4. Bug Fixes * The 32-bit variant of Git for Windows was missing some MSYS2 runtime updates, which was addressed; Do note 32-bit support is phased out. * The Git for Windows installer showed cut-off text in some setups. This has been fixed. * The git credential-manager --help command previously would not find a page to display in the web browser, which has been fixed. * A couple of bugs that could cause Git Bash to hang in certain scenarios were fixed. Git-2.44.0-rc1-64-bit.exe | d8157edf354afc66326db927de04e2dae054f55adbf3035bc9086478a5ecb423 Git-2.44.0-rc1-32-bit.exe | d53b5043216f5be5b154c5fe79e9cfd8c3d2ef2e6263cf3f3a9d358fc60843a4 PortableGit-2.44.0-rc1-64-bit.7z.exe | 1ee36ef5676e2536f869e6b89efcede826960b78f83cb1a685b9608f045a1582 PortableGit-2.44.0-rc1-32-bit.7z.exe | f96a638497b19d9d8c578fe1a6b54cb29c793c08ceaf204cbaa91ecd3583ee07 MinGit-2.44.0-rc1-64-bit.zip | bf13ebe8626699656e5adf659c905c6306b87917bb664fc52377011054771783 MinGit-2.44.0-rc1-32-bit.zip | 468b33306aca3f605e9fb64075a45a057ae2b72bb5aae42c2e37cf2a9846e37b MinGit-2.44.0-rc1-busybox-64-bit.zip | aa667eb43187b7515d539d70ffdc3f12523a03f9bb546584f46342f6673170fc MinGit-2.44.0-rc1-busybox-32-bit.zip | 5f902ec741b3e10dcce1e9cb06ed82f04668c9ea680030f52a194a7d869b2aa3 Git-2.44.0-rc1-64-bit.tar.bz2 | 7b6481465f1080c70e80df448b1fe7ece09407b3d580a8986f7934b6b3529e60 Git-2.44.0-rc1-32-bit.tar.bz2 | 8eded6886d07440084ce29dac6ce66dfa31795861d33c1a6aeb56bad0e0b31e6 Ciao, Johannes [Less]
Posted 2 months ago by Junio C Hamano
The latest maintenance release Git v2.43.2 is now available at the usual places. The tarballs are found at: https://www.kernel.org/pub/software/scm/git/ The following public repositories all have a copy of the 'v2.43.2' tag and the 'maint' ... [More] branch that the tag points at: url = https://git.kernel.org/pub/scm/git/git url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://github.com/gitster/git ---------------------------------------------------------------- Git 2.43.2 Release Notes ======================== Relative to Git 2.43.1, this release has two important fixes to allow "git imap-send" to be built with NO_CURL defined, and to restore the forced flushing behaviour when GIT_FLUSH=1 is set. It also contains other, unexciting, fixes that have already been merged to the 'master' branch of the development towards the next major release. Fixes since Git 2.43.1 ---------------------- * Update to a new feature recently added, "git show-ref --exists". * Rename detection logic ignored the final line of a file if it is an incomplete line. * "git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * "git diff --no-index file1 file2" segfaulted while invoking the external diff driver, which has been corrected. * Rewrite //-comments to /* comments */ in files whose comments prevalently use the latter. * A failed "git tag -s" did not necessarily result in an error depending on the crypto backend, which has been corrected. * "git stash" sometimes was silent even when it failed due to unwritable index file, which has been corrected. * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the mechanism by flipping what yes/no means by mistake, which has been corrected. Also contains documentation updates, code clean-ups and minor fixups. ---------------------------------------------------------------- Changes since v2.43.1 are as follows: Elijah Newren (1): diffcore-delta: avoid ignoring final 'line' of file James Touton (1): git-p4: use raw string literals for regular expressions Jeff King (1): diff: handle NULL meta-info when spawning external diff Johannes Schindelin (1): win32: special-case `ENOSPC` when writing to a pipe Junio C Hamano (11): Docs: [email protected] has been decomissioned CoC: whitespace fix builtin/worktree: comment style fixes merge-ort.c: comment style fix reftable/pq_test: comment style fix tag: fix sign_buffer() call to create a signed tag bisect: document "terms" subcommand more fully bisect: document command line arguments for "bisect start" ssh signing: signal an error with a negative return value write-or-die: fix the polarity of GIT_FLUSH environment variable Git 2.43.2 Linus Arver (1): strvec: use correct member name in comments Nikolay Borisov (1): rebase: fix documentation about used shell in -x Nikolay Edigaryev (1): rev-list-options: fix off-by-one in '--filter=blob:limit=' explainer Patrick Steinhardt (1): builtin/stash: report failure to write to index Philippe Blain (2): imap-send: add missing "strbuf.h" include under NO_CURL .github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs René Scharfe (2): parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN parse-options: simplify positivation handling Sam Delmerico (1): push: region_leave trace for negotiate_using_fetch Taylor Blau (1): pack-bitmap: drop unused `reuse_objects` Toon Claes (1): builtin/show-ref: treat directory as non-existing in --exists [Less]
Posted 2 months ago by Junio C Hamano
The latest maintenance release Git v2.43.2 is now available at the usual places. The tarballs are found at: https://www.kernel.org/pub/software/scm/git/ The following public repositories all have a copy of the 'v2.43.2' tag and the 'maint' ... [More] branch that the tag points at: url = https://git.kernel.org/pub/scm/git/git url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://github.com/gitster/git ---------------------------------------------------------------- Git 2.43.2 Release Notes ======================== Relative to Git 2.43.1, this release has two important fixes to allow "git imap-send" to be built with NO_CURL defined, and to restore the forced flushing behaviour when GIT_FLUSH=1 is set. It also contains other, unexciting, fixes that have already been merged to the 'master' branch of the development towards the next major release. Fixes since Git 2.43.1 ---------------------- * Update to a new feature recently added, "git show-ref --exists". * Rename detection logic ignored the final line of a file if it is an incomplete line. * "git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * "git diff --no-index file1 file2" segfaulted while invoking the external diff driver, which has been corrected. * Rewrite //-comments to /* comments */ in files whose comments prevalently use the latter. * A failed "git tag -s" did not necessarily result in an error depending on the crypto backend, which has been corrected. * "git stash" sometimes was silent even when it failed due to unwritable index file, which has been corrected. * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the mechanism by flipping what yes/no means by mistake, which has been corrected. Also contains documentation updates, code clean-ups and minor fixups. ---------------------------------------------------------------- Changes since v2.43.1 are as follows: Elijah Newren (1): diffcore-delta: avoid ignoring final 'line' of file James Touton (1): git-p4: use raw string literals for regular expressions Jeff King (1): diff: handle NULL meta-info when spawning external diff Johannes Schindelin (1): win32: special-case `ENOSPC` when writing to a pipe Junio C Hamano (11): Docs: [email protected] has been decomissioned CoC: whitespace fix builtin/worktree: comment style fixes merge-ort.c: comment style fix reftable/pq_test: comment style fix tag: fix sign_buffer() call to create a signed tag bisect: document "terms" subcommand more fully bisect: document command line arguments for "bisect start" ssh signing: signal an error with a negative return value write-or-die: fix the polarity of GIT_FLUSH environment variable Git 2.43.2 Linus Arver (1): strvec: use correct member name in comments Nikolay Borisov (1): rebase: fix documentation about used shell in -x Nikolay Edigaryev (1): rev-list-options: fix off-by-one in '--filter=blob:limit=' explainer Patrick Steinhardt (1): builtin/stash: report failure to write to index Philippe Blain (2): imap-send: add missing "strbuf.h" include under NO_CURL .github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs René Scharfe (2): parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN parse-options: simplify positivation handling Sam Delmerico (1): push: region_leave trace for negotiate_using_fetch Taylor Blau (1): pack-bitmap: drop unused `reuse_objects` Toon Claes (1): builtin/show-ref: treat directory as non-existing in --exists [Less]
Posted 2 months ago by Junio C Hamano
A release candidate Git v2.44.0-rc1 is now available for testing at the usual places. It is comprised of 473 non-merge commits since v2.43.0, contributed by 72 people, 33 of which are new faces [*]. The tarballs are found at: ... [More] https://www.kernel.org/pub/software/scm/git/testing/ The following public repositories all have a copy of the 'v2.44.0-rc1' tag and the 'master' branch that the tag points at: url = https://git.kernel.org/pub/scm/git/git url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://github.com/gitster/git New contributors whose contributions weren't in v2.43.0 are as follows. Welcome to the Git development community! Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin, Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang, Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott, Maarten van der Schrieck, Marcel Krause, Marcelo Roberto Jimenez, Michael Lohmann, moti sd, Nikolay Borisov, Nikolay Edigaryev, Ondrej Pohorelsky, Sam Delmerico, Sergey Kosukhin, Shreyansh Paliwal, Sören Krecker, Stan Hu, Tamino Bauknecht, Wilfred Hughes, Willem Verstraeten, Xiaoguang WANG, and Zach FettersMoore. Returning contributors who helped this release are as follows. Thanks for your continued support. Andy Koppe, Arthur Chan, Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder, Dragan Simic, Elijah Newren, Eric Sunshine, Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan Tan, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio C Hamano, Konstantin Ryabitsev, Kristoffer Haugsbakk, Linus Arver, Matthias Aßhauer, M Hickford, Oswald Buddenhagen, Patrick Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo, Simon Ser, SZEDER Gábor, Taylor Blau, Todd Zullinger, Toon Claes, and Victoria Dye. [*] We are counting not just the authorship contribution but issue reporting, mentoring, helping and reviewing that are recorded in the commit trailers. ---------------------------------------------------------------- Git v2.44 Release Notes (draft) =============================== Backward Compatibility Notes * "git chekcout -B " used to allow switching to a branch that is in use on another worktree, but this was by mistake. The users need to use "--ignore-other-worktrees" option. UI, Workflows & Features * "git add" and "git stash" learned to support the ":(attr:...)" magic pathspec. * "git rebase --autosquash" is now enabled for non-interactive rebase, but it is still incompatible with the apply backend. * Introduce "git replay", a tool meant on the server side without working tree to recreate a history. * "git merge-file" learned to take the "--diff-algorithm" option to use algorithm different from the default "myers" diff. * Command line completion (in contrib/) learned to complete path arguments to the "add/set" subcommands of "git sparse-checkout" better. * "git checkout -B []" allowed a branch that is in use in another worktree to be updated and checked out, which might be a bit unexpected. The rule has been tightened, which is a breaking change. "--ignore-other-worktrees" option is required to unbreak you, if you are used to the current behaviour that "-B" overrides the safety. * The builtin_objectmode attribute is populated for each path without adding anything in .gitattributes files, which would be useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)" to limit to executables. * "git fetch" learned to pay attention to "fetch.all" configuration variable, which pretends as if "--all" was passed from the command line when no remote parameter was given. * In addition to (rather cryptic) Security Identifiers, show username and domain in the error message when we barf on mismatch between the Git directory and the current user on Windows. * The error message given when "git branch -d branch" fails due to commits unique to the branch has been split into an error and a new conditional advice message. * When given an existing but unreadable file as a configuration file, gitweb behaved as if the file did not exist at all, but now it errors out. This is a change that may break backward compatibility. * When $HOME/.gitignore is missing but XDG config file available, we should write into the latter, not former. "git gc" and "git maintenance" wrote into a wrong "global config" file, which have been corrected. * Define "special ref" as a very narrow set that consists of FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to be classified as such are actually just pseudorefs. * All conditional "advice" messages show how to turn them off, which becomes repetitive. Setting advice.* configuration explicitly on now omits the instruction part. * The "disable repository discovery of a bare repository" check, triggered by setting safe.bareRepository configuration variable to 'explicit', has been loosened to exclude the ".git/" directory inside a non-bare repository from the check. So you can do "cd .git && git cmd" to run a Git command that works on a bare repository without explicitly specifying $GIT_DIR now. * The completion script (in contrib/) learned more options that can be used with "git log". * The labels on conflict markers for the common ancestor, our version, and the other version are available to custom 3-way merge driver via %S, %X, and %Y placeholders. * The write codepath for the reftable data learned to honor core.fsync configuration. * The "--fsck-objects" option of "git index-pack" now can take the optional parameter to tweak severity of different fsck errors. * The wincred credential backend has been taught to support oauth refresh token the same way as credential-cache and credential-libsecret backends. * Command line completion support (in contrib/) has been updated for "git bisect". * "git branch" and friends learned to use the formatted text as sorting key, not the underlying timestamp value, when the --sort option is used with author or committer timestamp with a format specifier (e.g., "--sort=creatordate:format:%H:%M:%S"). Performance, Internal Implementation, Development Support etc. * Process to add some form of low-level unit tests has started. * Add support for GitLab CI. * "git for-each-ref --no-sort" still sorted the refs alphabetically which paid non-trivial cost. It has been redefined to show output in an unspecified order, to allow certain optimizations to take advantage of. * Simplify API implementation to delete references by eliminating duplication. * Subject approxidate() and show_date() machinery to OSS-Fuzz. * A new helper to let us pretend that we called lstat() when we know our cache_entry is up-to-date via fsmonitor. * The optimization based on fsmonitor in the "diff --cached" codepath is resurrected with the "fake-lstat" introduced earlier. * Test balloon to use C99 "bool" type from has been added. * "git clone" has been prepared to allow cloning a repository with non-default hash function into a repository that uses the reftable backend. * Streaming spans of packfile data used to be done only from a single, primary, pack in a repository with multiple packfiles. It has been extended to allow reuse from other packfiles, too. * Comment updates to help developers not to attempt to modify messages from plumbing commands that must stay constant. It might make sense to reassess the plumbing needs every few years, but that should be done as a separate effort. * Move test-ctype helper to the unit-test framework. * Instead of manually creating refs/ hierarchy on disk upon a creation of a secondary worktree, which is only usable via the files backend, use the refs API to populate it. * CI for GitLab learned to drive macOS jobs. * A few tests to "git commit -o " and "git commit -i " has been added. * Tests on ref API are moved around to prepare for reftable. * The Makefile often had to say "-L$(path) -R$(path)" that repeats the path to the same library directory for link time and runtime. A Makefile template is used to reduce such repetition. * The priority queue test has been migrated to the unit testing framework. * Setting `feature.experimental` opts the user into multi-pack reuse experiment * Squelch node.js 16 deprecation warnings from GitHub Actions CI by updating actions/github-script and actions/checkout that use node.js 20. * The mechanism to report the filename in the source code, used by the unit-test machinery, assumed that the compiler expanded __FILE__ to the path to the source given to the $(CC), but some compilers give full path, breaking the output. This has been corrected. Fixes since v2.43 ----------------- * The way CI testing used "prove" could lead to running the test suite twice needlessly, which has been corrected. * Update ref-related tests. * "git format-patch --encode-email-headers" ignored the option when preparing the cover letter, which has been corrected. * Newer versions of Getopt::Long started giving warnings against our (ab)use of it in "git send-email". Bump the minimum version requirement for Perl to 5.8.1 (from September 2002) to allow simplifying our implementation. * Earlier we stopped relying on commit-graph that (still) records information about commits that are lost from the object store, which has negative performance implications. The default has been flipped to disable this pessimization. * Stale URLs have been updated to their current counterparts (or archive.org) and HTTP links are replaced with working HTTPS links. * trace2 streams used to record the URLs that potentially embed authentication material, which has been corrected. * The sample pre-commit hook that tries to catch introduction of new paths that use potentially non-portable characters did not notice an existing path getting renamed to such a problematic path, when rename detection was enabled. * The command line parser for the "log" family of commands was too loose when parsing certain numbers, e.g., silently ignoring the extra 'q' in "git log -n 1q" without complaining, which has been tightened up. * "git $cmd --end-of-options --rev -- --path" for some $cmd failed to interpret "--rev" as a rev, and "--path" as a path. This was fixed for many programs like "reset" and "checkout". * "git bisect reset" has been taught to clean up state files and refs even when BISECT_START file is gone. * Some codepaths did not correctly parse configuration variables specified with valueless "true", which has been corrected. * Code clean-up for sanity checking of command line options for "git show-ref". * The code to parse the From e-mail header has been updated to avoid recursion. * "git fetch --atomic" issued an unnecessary empty error message, which has been corrected. * Command line completion script (in contrib/) learned to work better with the reftable backend. * "git status" is taught to show both the branch being bisected and being rebased when both are in effect at the same time. * "git archive --list extra garbage" silently ignored excess command line parameters, which has been corrected. * "git sparse-checkout set" added default patterns even when the patterns are being fed from the standard input, which has been corrected. * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did not handle "--end-of-options" correctly after a recent update. * Unlike other environment variables that took the usual true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1, which has been corrected. * Clearing in-core repository (happens during e.g., "git fetch --recurse-submodules" with commit graph enabled) made in-core commit object in an inconsistent state by discarding the necessary data from commit-graph too early, which has been corrected. * Update to a new feature recently added, "git show-ref --exists". * oss-fuzz tests are built and run in CI. (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint). * Rename detection logic ignored the final line of a file if it is an incomplete line. * GitHub CI update. (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint). * "git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * "git archive --remote=" learned to talk over the smart http (aka stateless) transport. (merge 176cd68634 jx/remote-archive-over-smart-http later to maint). * Fetching via protocol v0 over Smart HTTP transport sometimes failed to correctly auto-follow tags. (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint). * The documentation for the --exclude-per-directory option marked it as deprecated, which confused readers into thinking there may be a plan to remove it in the future, which was not our intention. (merge 0009542cab jc/ls-files-doc-update later to maint). * "git diff --no-index file1 file2" segfaulted while invoking the external diff driver, which has been corrected. * Rewrite //-comments to /* comments */ in files whose comments prevalently use the latter. * Cirrus CI jobs started breaking because we specified version of FreeBSD that is no longer available, which has been corrected. (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint). * A caller called index_file_exists() that takes a string expressed as with a wrong length, which has been corrected. (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint). * A failed "git tag -s" did not necessarily result in an error depending on the crypto backend, which has been corrected. * "git stash" sometimes was silent even when it failed due to unwritable index file, which has been corrected. * "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD", which has been corrected. * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the mechanism by flipping what yes/no means by mistake, which has been corrected. * Other code cleanup, docfix, build fix, etc. (merge 5aea3955bc rj/clarify-branch-doc-m later to maint). (merge 9cce3be2df bk/bisect-doc-fix later to maint). (merge 8430b438f6 vd/fsck-submodule-url-test later to maint). (merge 3cb4384683 jc/t0091-with-unknown-git later to maint). ---------------------------------------------------------------- Changes since v2.43.0 are as follows: Achu Luma (2): unit-tests: rewrite t/helper/test-ctype.c as a unit test t2400: avoid losing exit status to pipes Andy Koppe (3): rebase: fully ignore rebase.autoSquash without -i rebase: support --autosquash without -i rebase: rewrite --(no-)autosquash documentation Antonin Delpeuch (2): merge-file: add --diff-algorithm option merge-ll: expose revision names to custom drivers Arthur Chan (1): fuzz: add new oss-fuzz fuzzer for date.c / date.h Britton Leo Kerin (9): doc: use singular form of repeatable path arg doc: refer to pathspec instead of path completion: tests: always use 'master' for default initial branch name completion: bisect: complete bad, new, old, and help subcommands completion: bisect: complete custom terms and related options completion: bisect: complete missing --first-parent and - -no-checkout options completion: new function __git_complete_log_opts completion: bisect: complete log opts for visualize subcommand completion: bisect: recognize but do not complete view subcommand Carlo Marcelo Arenas Belón (1): ci: update FreeBSD cirrus job Chandra Pratap (4): sideband.c: remove redundant 'NEEDSWORK' tag write-or-die: make GIT_FLUSH a Boolean environment variable t4129: prevent loss of exit code due to the use of pipes tests: move t0009-prio-queue.sh to the new unit testing framework Elijah Newren (32): t6429: remove switching aspects of fast-rebase replay: introduce new builtin replay: start using parse_options API replay: die() instead of failing assert() replay: introduce pick_regular_commit() replay: change rev walking options replay: add an important FIXME comment about gpg signing replay: remove progress and info output replay: remove HEAD related sanity check replay: make it a minimal server side command replay: use standard revision ranges replay: add --advance or 'cherry-pick' mode replay: add --contained to rebase contained branches replay: stop assuming replayed branches do not diverge completion: squelch stray errors in sparse-checkout completion completion: fix logic for determining whether cone mode is active completion: avoid misleading completions in cone mode completion: avoid user confusion in non-cone mode treewide: remove unnecessary includes from header files treewide: remove unnecessary includes in source files archive.h: remove unnecessary include blame.h: remove unnecessary includes fsmonitor--daemon.h: remove unnecessary includes http.h: remove unnecessary include line-log.h: remove unnecessary include pkt-line.h: remove unnecessary include submodule-config.h: remove unnecessary include trace2/tr2_tls.h: remove unnecessary include treewide: add direct includes currently only pulled in transitively treewide: remove unnecessary includes in source files sparse-checkout: be consistent with end of options markers diffcore-delta: avoid ignoring final 'line' of file Eric Sunshine (1): git-add.txt: add missing short option -A to synopsis Ghanshyam Thakkar (4): t7501: add tests for --include and --only t7501: add tests for --amend --signoff t0024: avoid losing exit status to pipes t0024: style fix Illia Bobyr (1): rebase: clarify --reschedule-failed-exec default James Touton (1): git-p4: use raw string literals for regular expressions Jean-Noël Avila (2): doc: enforce dashes in placeholders doc: enforce placeholders in documentation Jeff Hostetler (4): trace2: fix signature of trace2_def_param() macro t0211: test URL redacting in PERF format t0212: test URL redacting in EVENT format sparse-index: pass string length to index_file_exists() Jeff King (38): commit-graph: handle overflow in chunk_size checks midx: check consistency of fanout table commit-graph: drop redundant call to "lite" verification commit-graph: clarify missing-chunk error messages commit-graph: abort as soon as we see a bogus chunk commit-graph: use fanout value for graph size commit-graph: check order while reading fanout chunk commit-graph: drop verify_commit_graph_lite() commit-graph: mark chunk error messages for translation parse-options: decouple "--end-of-options" and "--" bisect: always clean on reset config: handle NULL value when parsing non-bools setup: handle NULL value when parsing extensions trace2: handle NULL values in tr2_sysenv config callback help: handle NULL value for alias.* config submodule: handle NULL value when parsing submodule.*.branch trailer: handle NULL value when parsing trailer-specific config fsck: handle NULL value when parsing message config config: reject bogus values for core.checkstat git_xmerge_config(): prefer error() to die() imap-send: don't use git_die_config() inside callback config: use config_error_nonbool() instead of custom messages diff: give more detailed messages for bogus diff.* config config: use git_config_string() for core.checkRoundTripEncoding push: drop confusing configset/callback redundancy gpg-interface: drop pointless config_error_nonbool() checks sequencer: simplify away extra git_config_string() call mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair() t5100: make rfc822 comment test more careful mailinfo: avoid recursion when unquoting From headers t1006: add tests for %(objectsize:disk) commit-graph: retain commit slab when closing NULL commit_graph index-pack: spawn threads atomically transport-helper: re-examine object dir after fetching diff: handle NULL meta-info when spawning external diff Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN Makefile: remove UNIT_TEST_BIN directory with "make clean" t/Makefile: get UNIT_TESTS list from C sources Jiang Xin (11): t5574: test porcelain output of atomic fetch fetch: no redundant error message for atomic fetch test-pkt-line: add option parser for unpack-sideband pkt-line: memorize sideband fragment in reader pkt-line: do not chomp newlines for sideband messages transport-helper: no connection restriction in connect_helper remote-curl: supports git-upload-archive service transport-helper: protocol v2 supports upload-archive http-backend: new rpc-service for git-upload-archive transport-helper: call do_take_over() in connect_helper transport-helper: call do_take_over() in process_connect Joanna Wang (2): attr: enable attr pathspec magic for git-add and git-stash attr: add builtin objectmode values support Johannes Schindelin (13): artifacts-tar: when including `.dll` files, don't forget the unit-tests cmake: fix typo in variable name cmake: also build unit tests cmake: use test names instead of full paths unit-tests: do not mistake `.pdb` files for being executable cmake: handle also unit tests unit-tests: do show relative file paths ci: avoid running the test suite _twice_ packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration trace2: redact passwords from https:// URLs by default win32: special-case `ENOSPC` when writing to a pipe ci: bump remaining outdated Actions versions ci(linux32): add a note about Actions that must not be updated John Cai (15): t3210: move to t0601 remove REFFILES prerequisite for some tests in t1405 and t2017 t1414: convert test to use Git commands instead of writing refs manually t1404: move reffiles specific tests to t0600 t1405: move reffiles specific tests to t0601 t1406: move reffiles specific tests to t0600 t1410: move reffiles specific tests to t0600 t1415: move reffiles specific tests to t0601 t1503: move reffiles specific tests to t0600 t3903: make drop stash test ref backend agnostic t4202: move reffiles specific tests to t0600 t5312: move reffiles specific tests to t0601 reftable: honor core.fsync index-pack: test and document --strict==... index-pack: --fsck-objects to take an optional argument for fsck msgs Josh Brobst (1): builtin/reflog.c: fix dry-run option short name Josh Soref (13): doc: update links to current pages doc: switch links to https doc: update links for andre-simon.de doc: refer to internet archive CodingGuidelines: move period inside parentheses CodingGuidelines: write punctuation marks SubmittingPatches: drop ref to "What's in git.git" SubmittingPatches: discourage new trailers SubmittingPatches: update extra tags list SubmittingPatches: provide tag naming advice SubmittingPatches: clarify GitHub visual SubmittingPatches: clarify GitHub artifact format SubmittingPatches: hyphenate non-ASCII Josh Steadmon (4): unit tests: add a project plan document ci: run unit tests in CI fuzz: fix fuzz test build rules ci: build and run minimal fuzzers in GitHub CI Julian Prein (1): hooks--pre-commit: detect non-ASCII when renaming Junio C Hamano (55): cache: add fake_lstat() diff-lib: fix check_removed() when fsmonitor is active checkout: refactor die_if_checked_out() caller orphan/unborn: add to the glossary and use them consistently orphan/unborn: fix use of 'orphan' in end-user facing messages revision: parse integer arguments to --max-count, --skip, etc., more carefully Start the 2.44 cycle checkout: forbid "-B " from touching a branch used elsewhere git.txt: HEAD is not that special git-bisect.txt: BISECT_HEAD is not that special refs.h: HEAD is not that special docs: AUTO_MERGE is not that special docs: MERGE_AUTOSTASH is not that special doc: format.notes specify a ref under refs/notes/ hierarchy The second batch remote.h: retire CAS_OPT_NAME The third batch archive: "--list" does not take further options sparse-checkout: use default patterns for 'set' only !stdin The fourth batch The fifth batch The sixth batch messages: mark some strings with "up-to-date" not to touch The seventh batch The eighth batch The ninth batch Docs: [email protected] has been decomissioned CoC: whitespace fix ls-files: avoid the verb "deprecate" for individual options The tenth batch builtin/worktree: comment style fixes merge-ort.c: comment style fix reftable/pq_test: comment style fix The eleventh batch t0091: allow test in a repository without tags The twelfth batch Makefile: reduce repetitive library paths Makefile: simplify output of the libpath_template The thirteenth batch GitHub Actions: update to checkout@v4 GitHub Actions: update to github-script@v7 t/Makefile: say the default target upfront The fourteenth batch tag: fix sign_buffer() call to create a signed tag bisect: document "terms" subcommand more fully bisect: document command line arguments for "bisect start" ssh signing: signal an error with a negative return value The fifteenth batch Git 2.43.1 Git 2.44-rc0 unit-tests: do show relative file paths on non-Windows, too A few more topics before -rc1 write-or-die: fix the polarity of GIT_FLUSH environment variable A few more fixes before -rc1 Git 2.43.2 Justin Tobler (2): t1401: remove lockfile creation t5541: remove lockfile creation Kristoffer Haugsbakk (5): config: format newlines config: rename global config function config: factor out global config file retrieval maintenance: use XDG config if it exists config: add back code comment Kyle Lippincott (1): setup: allow cwd=.git w/ bareRepository=explicit Linus Arver (4): commit: ignore_non_trailer computes number of bytes to ignore trailer: find the end of the log message trailer: use offsets for trailer_start/trailer_end strvec: use correct member name in comments M Hickford (1): credential/wincred: store oauth_refresh_token Maarten van der Schrieck (1): Documentation: fix statement about rebase.instructionFormat Marcel Krause (1): doc: make the gitfile syntax easier to discover Marcelo Roberto Jimenez (1): gitweb: die when a configuration file cannot be read Michael Lohmann (2): Documentation/git-merge.txt: fix reference to synopsis Documentation/git-merge.txt: use backticks for command wrapping Nikolay Borisov (1): rebase: fix documentation about used shell in -x Nikolay Edigaryev (1): rev-list-options: fix off-by-one in '--filter=blob:limit=' explainer Patrick Steinhardt (139): t: allow skipping expected object ID in `ref-store update-ref` t: convert tests to not write references via the filesystem t: convert tests to not access symrefs via the filesystem t: convert tests to not access reflog via the filesystem t1450: convert tests to remove worktrees via git-worktree(1) t4207: delete replace references via git-update-ref(1) t7300: assert exact states of repo t7900: assert the absence of refs via git-for-each-ref(1) t: mark several tests that assume the files backend with REFFILES ci: reorder definitions for grouping functions ci: make grouping setup more generic ci: group installation of Docker dependencies ci: split out logic to set up failed test artifacts ci: unify setup of some environment variables ci: squelch warnings when testing with unusable Git repo ci: install test dependencies for linux-musl ci: add support for GitLab CI t/lib-httpd: dynamically detect httpd and modules path t/lib-httpd: stop using legacy crypt(3) for authentication t9164: fix inability to find basename(1) in Subversion hooks global: convert trivial usages of `test -a/-o ` contrib/subtree: stop using `-o` to test for number of args contrib/subtree: convert subtree type check to use case statement Makefile: stop using `test -o` when unlinking duplicate executables t5510: ensure that the packed-refs file needs locking refs/files: use transactions to delete references refs: deduplicate code to delete references refs: remove `delete_refs` callback from backends commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default t0410: mark tests to require the reffiles backend t1400: split up generic reflog tests from the reffile-specific ones t1401: stop treating FETCH_HEAD as real reference t1410: use test-tool to create empty reflog t1417: make `reflog --updateref` tests backend agnostic t3310: stop checking for reference existence via `test -f` t4013: simplify magic parsing and drop "failure" t5401: speed up creation of many branches t5551: stop writing packed-refs directly t6301: write invalid object ID via `test-tool ref-store` reftable: wrap EXPECT macros in do/while reftable: handle interrupted reads reftable: handle interrupted writes reftable/stack: verify that `reftable_stack_add()` uses auto-compaction reftable/stack: perform auto-compaction with transactional interface reftable/stack: reuse buffers when reloading stack reftable/stack: fix stale lock when dying reftable/stack: fix use of unseeded randomness reftable/merged: reuse buffer to compute record keys reftable/block: introduce macro to initialize `struct block_iter` reftable/block: reuse buffer to compute record keys setup: extract function to create the refdb setup: allow skipping creation of the refdb remote-curl: rediscover repository when fetching refs builtin/clone: fix bundle URIs with mismatching object formats builtin/clone: set up sparse checkout later builtin/clone: skip reading HEAD when retrieving remote builtin/clone: create the refdb with the correct object format wt-status: read HEAD and ORIG_HEAD via the refdb refs: propagate errno when reading special refs fails refs: complete list of special refs bisect: consistently write BISECT_EXPECTED_REV via the refdb tests: adjust whitespace in chainlint expectations t: introduce DEFAULT_REPO_FORMAT prereq worktree: skip reading HEAD when repairing worktrees refs: refactor logic to look up storage backends setup: start tracking ref storage format setup: set repository's formats on init setup: introduce "extensions.refStorage" extension setup: introduce GIT_DEFAULT_REF_FORMAT envvar t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar builtin/rev-parse: introduce `--show-ref-format` flag builtin/init: introduce `--ref-format=` value flag builtin/clone: introduce `--ref-format=` value flag t9500: write "extensions.refstorage" into config reftable/stack: do not overwrite errors when compacting reftable/stack: do not auto-compact twice in `reftable_stack_add()` reftable/writer: fix index corruption when writing multiple indices reftable/record: constify some parts of the interface reftable/record: store "val1" hashes as static arrays reftable/record: store "val2" hashes as static arrays reftable/merged: really reuse buffers to compute record keys reftable/merged: transfer ownership of records when iterating git-prompt: stop manually parsing HEAD with unknown ref formats ci: add job performing static analysis on GitLab CI refs: prepare `refs_init_db()` for initializing worktree refs setup: move creation of "refs/" into the files backend refs/files: skip creation of "refs/{heads,tags}" for worktrees builtin/worktree: move setup of commondir file earlier worktree: expose interface to look up worktree by name builtin/worktree: create refdb via ref backend reftable/stack: refactor stack reloading to have common exit path reftable/stack: refactor reloading to use file descriptor reftable/stack: use stat info to avoid re-reading stack list reftable/blocksource: refactor code to match our coding style reftable/blocksource: use mmap to read tables git-p4: stop reaching into the refdb commit-graph: fix memory leak when not writing graph completion: discover repo path in `__git_pseudoref_exists ()` t9902: verify that completion does not print anything completion: improve existence check for pseudo-refs completion: silence pseudoref existence check completion: treat dangling symrefs as existing pseudorefs t7527: decrease likelihood of racing with fsmonitor daemon Makefile: detect new Homebrew location for ARM-based Macs ci: handle TEST_OUTPUT_DIRECTORY when printing test failures ci: make p4 setup on macOS more robust ci: add macOS jobs to GitLab CI reftable/stack: unconditionally reload stack after commit reftable/stack: fix race in up-to-date check sequencer: clean up pseudo refs with REF_NO_DEREF sequencer: delete REBASE_HEAD in correct repo when picking commits refs: convert AUTO_MERGE to become a normal pseudo-ref sequencer: introduce functions to handle autostashes via refs refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref refs: redefine special refs Documentation: add "special refs" to the glossary reftable/stack: adjust permissions of compacted tables t1300: make tests more robust with non-default ref backends t1301: mark test for `core.sharedRepository` as reffiles specific t1302: make tests more robust with new extensions t1419: mark test suite as files-backend specific t5526: break test submodule differently t: mark tests regarding git-pack-refs(1) to be backend specific reftable/stack: fsync "tables.list" during compaction reftable/reader: be more careful about errors in indexed seeks reftable/writer: use correct type to iterate through index entries reftable/writer: simplify writing index records reftable/writer: fix writing multi-level indices reftable: document reading and writing indices builtin/stash: report failure to write to index reftable: introduce macros to grow arrays reftable: introduce macros to allocate arrays reftable/stack: fix parameter validation when compacting range reftable/stack: index segments with `size_t` reftable/stack: use `size_t` to track stack slices during compaction reftable/stack: use `size_t` to track stack length reftable/merged: refactor seeking of records reftable/merged: refactor initialization of iterators reftable/record: improve semantics when initializing records Philippe Blain (7): completion: complete missing rev-list options completion: complete --patch-with-raw completion: complete --encoding completion: complete missing 'git log' options ci(github): also skip logs of broken test cases imap-send: add missing "strbuf.h" include under NO_CURL .github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs Phillip Wood (3): unit tests: add TAP unit test framework show-ref --verify: accept pseudorefs t1400: use show-ref to check pseudorefs René Scharfe (19): column: release strbuf and string_list after use i18n: factorize even more 'incompatible options' messages push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror repack: use die_for_incompatible_opt3() for -A/-k/--cruft revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs revision, rev-parse: factorize incompatibility messages about - -exclude-hidden clean: factorize incompatibility message worktree: standardize incompatibility messages worktree: simplify incompatibility message for --orphan and commit-ish show-ref: use die_for_incompatible_opt3() t6300: avoid hard-coding object sizes git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool rebase: use strvec_pushf() for format-patch revisions fast-import: use mem_pool_calloc() mem-pool: fix big allocations mem-pool: simplify alignment calculation t1006: prefer shell loop to awk for packed object sizes parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN parse-options: simplify positivation handling Rubén Justo (10): status: fix branch shown when not only bisecting branch: clarify term advice: sort the advice related lists advice: fix an unexpected leading space branch: make the advice to force-deleting a conditional one advice: allow disabling the automatic hint in advise_if_enabled() t5332: mark as leak-free t6113: mark as leak-free test-lib: check for TEST_PASSES_SANITIZE_LEAK t0080: mark as leak-free Sam Delmerico (1): push: region_leave trace for negotiate_using_fetch Shreyansh Paliwal (1): test-lib-functions.sh: fix test_grep fail message wording Simon Ser (1): format-patch: fix ignored encode_email_headers for cover letter Stan Hu (2): completion: refactor existence checks for pseudorefs completion: support pseudoref existence checks for reftables Sören Krecker (1): mingw: give more details about unsafe directory's ownership Tamino Bauknecht (1): fetch: add new config option fetch.all Taylor Blau (29): pack-objects: free packing_data in more places pack-bitmap-write: deep-clear the `bb_commit` slab pack-bitmap: plug leak in find_objects() midx: factor out `fill_pack_info()` midx: implement `BTMP` chunk midx: implement `midx_locate_pack()` pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions ewah: implement `bitmap_is_empty()` pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()` pack-objects: parameterize pack-reuse routines over a single pack pack-objects: keep track of `pack_start` for each reuse pack pack-objects: pass `bitmapped_pack`'s to pack-reuse functions pack-objects: prepare `write_reused_pack()` for multi-pack reuse pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse pack-objects: include number of packs reused in output git-compat-util.h: implement checked size_t to uint32_t conversion midx: implement `midx_preferred_pack()` pack-revindex: factor out `midx_key_to_pack_pos()` helper pack-revindex: implement `midx_pair_to_pack_pos()` pack-bitmap: prepare to mark objects from multiple packs for reuse pack-objects: add tracing for various packfile metrics t/test-lib-functions.sh: implement `test_trace2_data` helper pack-objects: allow setting `pack.allowPackReuse` to "single" pack-bitmap: enable reuse from all bitmapped packs t/perf: add performance tests for multi-pack reuse pack-bitmap: drop unused `reuse_objects` t5332-multi-pack-reuse.sh: extract pack-objects helper functions pack-objects: enable multi-pack reuse via `feature.experimental` Todd Zullinger (2): perl: bump the required Perl version to 5.8.1 from 5.8.0 send-email: avoid duplicate specification warnings Toon Claes (1): builtin/show-ref: treat directory as non-existing in --exists Victoria Dye (15): ref-filter.c: really don't sort when using --no-sort ref-filter.h: add max_count and omit_empty to ref_format ref-filter.h: move contains caches into filter ref-filter.h: add functions for filter/format & format-only ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()' ref-filter.c: refactor to create common helper functions ref-filter.c: filter & format refs in the same callback for-each-ref: clean up documentation of --format ref-filter.c: use peeled tag for '*' format fields t/perf: add perf tests for for-each-ref submodule-config.h: move check_submodule_url test-submodule: remove command line handling for check-name t7450: test submodule urls submodule-config.c: strengthen URL fsck check ref-filter.c: sort formatted dates by byte value Zach FettersMoore (1): subtree: fix split processing with multiple subtrees present [Less]