A release candidate Git v2.51.0-rc1 is now available for testing at the usual places. It is comprised of 542 non-merge commits since v2.50.0, contributed by 81 people, 22 of which are new faces [*]. 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.51.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.50.0 are as follows. Welcome to the Git development community! Brett A C Sheffield, chenjianhu, David Leadbeater, Gareth Fenn, Hoyoung Lee, Ilya Grigoriev, irecca.kun@xxxxxxxxx, Isabella Caselli, Jakub Ječmínek, Jan Mazur, Jinyao Guo, Jonas Brandstötter, Jörg Thalheim, Leon Michalak, Patrick Steinhardt' via Git Security, Patrik Weiskircher, redoste, Rodrigo Michelassi, Russell Hanneken, Ryan Hodges, Timur Sultanaev, and Vasilii Iakliushin. Returning contributors who helped this release are as follows. Thanks for your continued support. Aditya Garg, Alexander Shopov, Avi Halachmi (:avih), Ayush Chandekar, Brad Smith, brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder, Collin Funk, Denton Liu, Derrick Stolee, Elijah Newren, Eric Sunshine, Ghanshyam Thakkar, Han Young, Jacob Keller, Jean-Noël Avila, Jeff King, Johannes Schindelin, Johannes Sixt, Jouke Witteveen, Junio C Hamano, Justin Tobler, Karthik Nayak, Kevin Brodsky, K Jayatheerth, Kristoffer Haugsbakk, Kyle Lippincott, Lidong Yan, Lucas Seiki Oshiro, Mark Levedahl, Martin Ågren, Martin Storsjö, Matthias Aßhauer, Maxim Cournoyer, Michael Rappazzo, Orgad Shaneh, Ori Avtalion, Oswald Buddenhagen, Øystein Walle, Patrick Steinhardt, Phil Hord, Phillip Wood, Ramsay Jones, Raymond E. Pasco, Renato Botelho, René Scharfe, Rodrigo Carvalho, Sebastian Andrzej Siewior, Seyi Kuforiji, shejialuo, Siddharth Asthana, Stan Hu, SZEDER Gábor, Takashi Iwai, 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.51 Release Notes (draft) =============================== UI, Workflows & Features ------------------------ * Userdiff patterns for the R language have been added. * Documentation for "git send-email" has been updated with a bit more credential helper and OAuth information. * "git cat-file --batch" learns to understand %(objectmode) atom to allow the caller to tell missing objects (due to repository corruption) and submodules (whose commit objects are OK to be missing) apart. * "git diff --no-index dirA dirB" can limit the comparison with pathspec at the end of the command line, just like normal "git diff". * "git subtree" (in contrib/) learned to grok GPG signing its commits. * "git whatchanged" that is longer to type than "git log --raw" which is its modern rough equivalent has outlived its usefulness more than 10 years ago. Plan to deprecate and remove it. * An interchange format for stash entries is defined, and subcommand of "git stash" to import/export has been added. * "git merge/pull" has been taught the "--compact-summary" option to use the compact-summary format, intead of diffstat, when showing the summary of the incoming changes. * "git imap-send" has been broken for a long time, which has been resurrected and then taught to talk OAuth2.0 etc. * Some error messages from "git imap-send" has been updated. * When "git daemon" sees a signal while attempting to accept() a new client, instead of retrying, it skipped it by mistake, which has been corrected. * The reftable ref backend has matured enough; Git 3.0 will make it the default format in a newly created repositories by default. * "netrc" credential helper has been improved to understand textual service names (like smtp) in addition to the numeric port numbers (like 25). * Lift the limitation to use changed-path filter in "git log" so that it can be used for a pathspec with multiple literal paths. * Clean up the way how signature on commit objects are exported to and imported from fast-import stream. * Remove unsupported, unused, and unsupportable old option from "git log". * Document recently added "git imap-send --list" with an example. * "git pull" learned to pay attention to pull.autostash configuration variable, which overrides rebase/merge.autostash. * "git for-each-ref" learns "--start-after" option to help applications that want to page its output. * "git switch" and "git restore" are declared to be no longer experimental. * "git -c alias.foo=bar foo -h baz" reported "'foo' is aliased to 'bar'" and then went on to run "git foo -h baz", which was unexpected. Tighten the rule so that alias expansion is reported only when "-h" is the sole option. Performance, Internal Implementation, Development Support etc. -------------------------------------------------------------- * "git pack-objects" learned to find delta bases from blobs at the same path, using the --path-walk API. * CodingGuidelines update. * Add settings for Solaris 10 & 11. * Meson-based build/test framework now understands TAP output generated by our tests. * "Do not explicitly initialize to zero" rule has been clarified in the CodingGuidelines document. * A test helper "test_seq" function learned the "-f <fmt>" option, which allowed us to simplify a lot of test scripts. * A lot of stale stuff has been removed from the contrib/ hierarchy. * "git push" and "git fetch" are taught to update refs in batches to gain performance. * Some code paths in "git prune" used to ignore the passed-in repository object and used the `the_repository` singleton instance instead, which has been corrected. * Update ".clang-format" and ".editorconfig" to match our style guide a bit better. * "make coccicheck" succeeds even when spatch made suggestions, which has been updated to fail in such a case. * Code clean-up around object access API. * Define .precision to more canned parse-options type to avoid bugs coming from using a variable with a wrong type to capture the parsed values. * Flipping the default hash function to SHA-256 at Git 3.0 boundary is planned. * Declare weather-balloon we raised for "bool" type 18 months ago a success and officially allow using the type in our codebase. * GIT_TEST_INSTALLED was not honored in the recent topic related to SHA256 hashes, which has been corrected. * The pop_most_recent_commit() function can have quite expensive worst case performance characteristics, which has been optimized by using prio-queue data structure. * Move structure definition from unrelated header file to where it belongs. * To help our developers, document what C99 language features are being considered for adoption, in addition to what past experiments have already decided. * The reftable unit tests are now ported to the "clar" unit testing framework. * Redefine where the multi-pack-index sits in the object subsystem, which recently was restructured to allow multiple backends that support a single object source that belongs to one repository. A MIDX does span multiple "object sources". * Reduce implicit assumption and dependence on the_repository in the object-file subsystem. Fixes since v2.50 ----------------- Unless otherwise noted, all the changes in 2.50.X maintenance track, including security updates, are included in this release. * A memory-leak in an error code path has been plugged. (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint). * A memory-leak in an error code path has been plugged. (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint). * Some leftover references to documentation source files that no longer exist, due to recent ".txt" -> ".adoc" renaming, have been corrected. (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint). * "git stash -p <pathspec>" improvements. (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint). * "git send-email" incremented its internal message counter when a message was edited, which made logic that treats the first message specially misbehave, which has been corrected. (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint). * "git stash" recorded a wrong branch name when submodules are present in the current checkout, which has been corrected. (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint). * When asking to apply mailmap to both author and committer field while showing a commit object, the field that appears later was not correctly parsed and replaced, which has been corrected. (merge abf94a283f sa/multi-mailmap-fix later to maint). * "git maintenance" lacked the care "git gc" had to avoid holding onto the repository lock for too long during packing refs, which has been remedied. (merge 1b5074e614 ps/maintenance-ref-lock later to maint). * Avoid regexp_constraint and instead use comparison_constraint when listing functions to exclude from application of coccinelle rules, as spatch can be built with different regexp engine X-<. (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint). * Updating submodules from the upstream did not work well when submodule's HEAD is detached, which has been improved. (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint). * Remove unnecessary check from "git daemon" code. (merge 0c856224d2 cb/daemon-fd-check-fix later to maint). * Use of sysctl() system call to learn the total RAM size used on BSDs has been corrected. (merge 781c1cf571 cb/total-ram-bsd-fix later to maint). * Drop FreeBSD 4 support and declare that we support only FreeBSD 12 or later, which has memmem() supported. (merge 0392f976a7 bs/config-mak-freebsd later to maint). * A diff-filter with negative-only specification like "git log --diff-filter=d" did not trigger correctly, which has been fixed. (merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint). * A failure to open the index file for writing due to conflicting access did not state what went wrong, which has been corrected. (merge 9455397a5c hy/read-cache-lock-error-fix later to maint). * Tempfile removal fix in the codepath to sign commits with SSH keys. (merge 4498127b04 re/ssh-sign-buffer-fix later to maint). * Code and test clean-up around string-list API. (merge 6e5b26c3ff sj/string-list later to maint). * "git apply -N" should start from the current index and register only new files, but it instead started from an empty index, which has been corrected. (merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint). * Leakfix with a new and a bit invasive test on pack-bitmap files. (merge bfd5522e98 ly/load-bitmap-leakfix later to maint). * "git fetch --prune" used to be O(n^2) expensive when there are many refs, which has been corrected. (merge 87d8d8c5d0 ph/fetch-prune-optim later to maint). * When a ref creation at refs/heads/foo/bar fails, the files backend now removes refs/heads/foo/ if the directory is otherwise not used. (merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint). * "pack-objects" has been taught to avoid pointing into objects in cruft packs from midx. * "git remote" now detects remote names that overlap with each other (e.g., remote nickname "outer" and "outer/inner" are used at the same time), as it will lead to overlapping remote-tracking branches. (merge a5a727c448 jk/remote-avoid-overlapping-names later to maint). * The gpg.program configuration variable, which names a pathname to the (custom) GPG compatible program, can now be spelled with ~tilde expansion. (merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint). * Our <sane-ctype.h> header file relied on that the system-supplied <ctype.h> header is not later included, which would override our macro definitions, but "amazon linux" broke this assumption. Fix this by preemptively including <ctype.h> near the beginning of <sane-ctype.h> ourselves. (merge 9d3b33125f ps/sane-ctype-workaround later to maint). * Clean-up compat/bswap.h mess. (merge f4ac32c03a ss/compat-bswap-revamp later to maint). * Meson-based build did not handle libexecdir setting correctly, which has been corrected. (merge 056dbe8612 rj/meson-libexecdir-fix later to maint). * Document that we do not require "real" name when signing your patches off. (merge 1f0fed312a bc/contribution-under-non-real-names later to maint). * "git commit" that concludes a conflicted merge failed to notice and remove existing comment added automatically (like "# Conflicts:") when the core.commentstring is set to 'auto'. (merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint). * "git rebase -i" with bogus rebase.instructionFormat configuration failed to produce the todo file after recording the state files, leading to confused "git status"; this has been corrected. (merge ade14bffd7 ow/rebase-verify-insn-fmt-before-initializing-state later to maint). * A few file descriptors left unclosed upon program completion in a few test helper programs are now closed. (merge 0f1b33815b hl/test-helper-fd-close later to maint). * Interactive prompt code did not correctly strip CRLF from the end of line on Windows. (merge 711a20827b js/prompt-crlf-fix later to maint). * The config API had a set of convenience wrapper functions that implicitly use the_repository instance; they have been removed and inlined at the calling sites. * "git add/etc -p" now honor the diff.context configuration variable, and also they learn to honor the -U<n> command-line option. (merge 2b3ae04011 lm/add-p-context later to maint). * The case where a new submodule takes a path where there used to be a completely different subproject is now dealt with a bit better than before. (merge 5ed8c5b465 kj/renamed-submodule later to maint). * The deflate codepath in "git archive --format=zip" had a longstanding bug coming from misuse of zlib API, which has been corrected. * Other code cleanup, docfix, build fix, etc. (merge b257adb571 lo/my-first-ow-doc-update later to maint). (merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint). (merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint). (merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint). (merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint). (merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint). (merge 65dff89c6b ma/doc-diff-cc-headers later to maint). (merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint). (merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint). (merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint). (merge 855cfc65ae rm/t2400-modernize later to maint). (merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint). (merge ff73f375bb jg/mailinfo-leakfix later to maint). (merge 996f14c02b jj/doc-branch-markup-fix later to maint). (merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint). (merge b0e9d25865 jk/fix-leak-send-pack later to maint). (merge f3a9558c8c bs/remote-helpers-doc-markup-fix later to maint). (merge c4e9775c60 kh/doc-config-subcommands later to maint). (merge de404249ab ps/perlless-test-fixes later to maint). (merge 953049eed8 ts/merge-orig-head-doc-fix later to maint). (merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint). (merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint). (merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint). (merge b27be108c8 ja/doc-git-log-markup later to maint). (merge 14d7583beb pw/config-kvi-remove-path later to maint). (merge f31abb421d jc/do-not-scan-argv-without-parsing later to maint). (merge 26552cb62a jk/unleak-reflog-expire-entry later to maint). (merge 339d95fda9 jc/ci-print-test-failures-fix later to maint). (merge 8c3add51a8 cb/meson-avoid-broken-macos-pcre2 later to maint). (merge 5247da07b8 ps/meson-clar-decls-fix later to maint). (merge f3ef347bb2 ch/t7450-recursive-clone-test-fix later to maint). (merge 4ac3302a1a jc/doc-release-vs-clear later to maint). (merge 3bdd897413 ms/meson-with-ancient-git-wo-ls-files-dedup later to maint). (merge cca758d324 kh/doc-fast-import-historical later to maint). (merge 9b0781196a jc/test-hashmap-is-still-here later to maint). (merge 1bad05bacc jk/revert-squelch-compiler-warning later to maint). (merge 3a7e783d9c dl/squelch-maybe-uninitialized later to maint). ---------------------------------------------------------------- Changes since v2.50.0 are as follows: Aditya Garg (22): docs: add credential helper for yahoo and link Google's sendgmail tool docs: improve formatting in git-send-email documentation docs: remove credential helper links for emails from gitcredentials docs: make the purpose of using app password for Gmail more clear in send-email send-email: fix bug resulting in broken threads if a message is edited send-email: show the new message id assigned by outlook in the logs imap-send: fix bug causing cfg->folder being set to NULL imap-send: fix memory leak in case auth_cram_md5 fails imap-send: gracefully fail if CRAM-MD5 authentication is requested without OpenSSL imap-send: add support for OAuth2.0 authentication imap-send: add PLAIN authentication method to OpenSSL imap-send: enable specifying the folder using the command line imap-send: add ability to list the available folders imap-send: display port alongwith host when git credential is invoked imap-send: display the destination mailbox when sending a message imap-send: fix minor mistakes in the logs docs: link OpenSSL's verify(1) manual page to know about -CAfile and -CApath options docs: add outlookidfix config option to sendemail documentation docs: add an OAuth2.0 credential helper for AOL accounts docs: add a paragraph explaining the `sendmailCmd` option of sendemail docs: mention possible options for Proton Mail users docs: explain how to use `git imap-send --list` command to get a list of available folders Alexander Shopov (5): git-gui i18n: Updated Bulgarian translation (578t) gitk i18n: Update Bulgarian translation (322t) gitk i18n: Remove the locations within the Bulgarian translation git-gui i18n: Update Bulgarian translation (557t) git-gui i18n: Remove the locations within the Bulgarian translation Avi Halachmi (:avih) (1): gitk: encode arguments correctly with "open" Ayush Chandekar (6): environment: remove the global variable 'core_preload_index' preload-index: stop depending on 'the_repository' repository: move 'repository_format_precious_objects' to repo scope builtin/prune: stop depending on 'the_repository' commit: avoid scanning trailing comments when 'core.commentChar' is "auto" config: set comment_line_str to "#" when core.commentChar=auto Brad Smith (1): config.mak.uname: update settings for Solaris 10 and 11 Brett A C Sheffield (1): gitremote-helpers.adoc: fix formatting Carlo Marcelo Arenas Belón (14): daemon: remove unnecesary restriction for listener fd daemon: correctly handle soft accept() errors in service_loop ci: update FreeBSD image to 14.3 config.mak.uname: set NO_MEMMEM only for functional version build: retire NO_UINTMAX_T builtin/gc: correct total_ram calculation with HAVE_BSD_SYSCTL compat/mingw: allow sigaction(SIGCHLD) daemon: use sigaction() to install child_handler() meson: work around broken system PCRE2 dependency in macOS git-gui: remove uname_O in Makefile git-gui: fix dependency of GITGUI_MAIN on generator git-gui: retire Git Gui.app git-gui: honor TCLTK_PATH in git-gui--askpass git-gui: ensure own version of git-gui--askpass is used Christian Couder (2): fast-(import|export): improve on commit signature output format t9350: redirect input to only fast-import Collin Funk (1): CodingGuidelines: document formatting of similar config variables. Denton Liu (1): t/unit-tests/clar: fix -Wmaybe-uninitialized with -Og Derrick Stolee (13): pack-objects: extract should_attempt_deltas() pack-objects: add --path-walk option pack-objects: update usage to match docs p5313: add performance tests for --path-walk pack-objects: introduce GIT_TEST_PACK_PATH_WALK t5538: add tests to confirm deltas in shallow pushes repack: add --path-walk option pack-objects: enable --path-walk via config scalar: enable path-walk during push via config pack-objects: refactor path-walk delta phase pack-objects: thread the path-based compression path-walk: add new 'edge_aggressive' option pack-objects: allow --shallow and --path-walk Han Young (2): read-cache: report lock error when refreshing index blame: remove parameter detailed in get_commit_info() Hoyoung Lee (1): t/helper/test-truncate: close file descriptor after truncation Ilya Grigoriev (1): gitk: Mention globs in description of preference to hide custom refs Jacob Keller (12): pathspec: add match_leading_pathspec variant pathspec: add flag to indicate operation without repository diff --no-index: support limiting by pathspec remote: remove branch->merge_name and fix branch_release() remote: fix tear down of struct remote dir: move starts_with_dot(_dot)_slash to dir.h remote: remove the_repository from some functions submodule--helper: improve logic for fallback remote name submodule: move get_default_remote_submodule() submodule: look up remotes by URL first send-pack: clean up extra_have oid array reflog: close leak of reflog expire entry Jakub Ječmínek (1): doc: improve formatting in branch section Jan Mazur (1): bundle-uri: send debug output to given FILE * stream Jean-Noël Avila (9): doc: convert git-log to new documentation format doc: git-log convert rev-list-description to new doc format doc: git-log: convert line range options to new doc format doc: git-log: convert line range format to new doc format doc: git-log: convert rev list options to new doc format doc: git-log: convert pretty options to new doc format doc: git-log: convert pretty formats to new doc format doc: git-log: convert diff options to new doc format doc: git-log: convert log config to new doc format Jeff King (11): t7422: replace confusing printf with echo test-lib: teach test_seq the -f option setup_revisions(): turn on diffs for all-negative diff filter remote: detect collisions in remote names revision: drop early output option test-delta: handle errors with die() test-delta: use strbufs to hold input files test-delta: close output descriptor after use t7510: use $PWD instead of $(pwd) inside PATH revert: initialize const value remote: bail early from set_head() if missing remote name Jinyao Guo (1): mailinfo.c: fix memory leak in function handle_content_type() Johannes Schindelin (3): mingw: drop Windows 7-specific work-around mingw_rename: support ReFS on Windows 2022 mingw: support Windows Server 2016 again Johannes Sixt (32): git-gui: do not end the commit message with an empty line gitk: treat file names beginning with "|" as relative paths gitk: have callers of diffcmd supply pipe symbol when necessary gitk: sanitize 'exec' arguments: simple cases gitk: sanitize 'exec' arguments: 'eval exec' gitk: sanitize 'exec' arguments: redirections gitk: sanitize 'exec' arguments: redirections and background gitk: sanitize 'exec' arguments: redirect to process gitk: sanitize 'open' arguments: simple commands gitk: sanitize 'open' arguments: simple commands with redirections gitk: sanitize 'open' arguments: simple commands, readable and writable gitk: collect construction of blameargs into a single conditional gitk: sanitize 'open' arguments: command pipeline git-gui: remove special treatment of Windows from open_cmd_pipe git-gui: remove git config --list handling for git < 1.5.3 git-gui: treat file names beginning with "|" as relative paths git-gui: sanitize 'exec' arguments: simple cases git-gui: sanitize 'exec' arguments: background git-gui: remove option --stderr from git_read git-gui: break out a separate function git_read_nice git-gui: use git_read in githook_read gitk: sanitize 'open' arguments: revisit recently updated 'open' calls git-gui: convert git_read*, git_write to be non-variadic git-gui: pass redirections as separate argument to _open_stdout_stderr git-gui: pass redirections as separate argument to git_read git-gui: introduce function git_redir for git calls with redirections git-gui: do not mistake command arguments as redirection operators git-gui: sanitize 'exec' arguments: convert new 'cygpath' calls gitk: choosefont - remove a stray debugging line gitk: remove header of now empty section "General options" gitk: avoid duplicated upstream refs interactive: do strip trailing CRLF from input Jonas Brandstötter (2): gpg-interface: expand gpg.program as a path t7510: add test cases for non-absolute gpg program Jouke Witteveen (1): doc: update references to renamed AsciiDoc files Junio C Hamano (43): you-still-use-that??: help deprecating commands for removal doc: prepare for a world without whatchanged tests: prepare for a world without whatchanged whatchanged: require --i-still-use-this whatchanged: remove when built with WITH_BREAKING_CHANGES whatschanged: list it in BreakingChanges document CodingGuidelines: let BSS do its job Git 2.49.1 merge/pull: add the "--compact-summary" option merge/pull: extend merge.stat configuration variable to cover --compact-summary Git 2.50.1 Start 2.51 cycle, the first batch diff-no-index: do not reference .d_type member of struct dirent The second batch cocci: matching (multiple) identifiers coccicheck: fail "make" when it fails The third batch The fourth batch The fifth batch send-pack: clean-up even when taking an early exit The sixth batch The seventh batch The eighth batch The ninth batch The tenth batch The eleventh batch ci: allow github-actions print test failures again The twelfth batch rev-list: make "struct rev_list_info" static to the only user rev-list: update a NEEDSWORK comment The thirteenth batch CodingGuidelines: document test balloons in flight fixup! submodule: prevent overwriting .gitmodules on path reuse fixup! submodule: skip redundant active entries when pattern covers path The fourteenth batch The fifteenth batch test-hashmap: document why it is no longer used but still there CodingGuidelines: clarify that S_release() does not reinitialize The sixteenth batch The seventeenth batch, just before -rc0 Git 2.51-rc0 A bit more after -rc0 Git 2.51-rc1 Justin Tobler (3): config: quote values containing CR character builtin: unmark git-switch and git-restore as experimental archive: flush deflate stream until Z_STREAM_END Jörg Thalheim (2): imap-send: fix confusing 'store' terminology in error message imap-send: improve error messages with configuration hints K Jayatheerth (3): stash: fix incorrect branch name in stash message submodule: prevent overwriting .gitmodules on path reuse submodule: skip redundant active entries when pattern covers path Karthik Nayak (20): refs: add function to translate errors to strings fetch: use batched reference updates send-pack: fix memory leak around duplicate refs receive-pack: use batched reference updates refs/files: skip updates with errors in batched updates receive-pack: handle reference deletions separately clang-format: set 'ColumnLimit' to 0 clang-format: add 'RemoveBracesLLVM' to the main config meson: add rule to run 'git clang-format' refs: expose `ref_iterator` via 'refs.h' ref-cache: remove unused function 'find_ref_entry()' refs: selectively set prefix in the seek functions ref-filter: remove unnecessary else clause for-each-ref: introduce a '--start-after' option ref-cache: set prefix_state when seeking ref-cache: use 'size_t' instead of int for length for-each-ref: fix documentation argument ordering for-each-ref: reword the documentation for '--start-after' t6302: add test combining '--start-after' with '--exclude' ref-filter: use REF_ITERATOR_SEEK_SET_PREFIX instead of '1' Kristoffer Haugsbakk (6): config: document --[no-]show-names config: use --value=<pattern> consistently config: document --[no-]value config: use --value instead of value-pattern config: mention --url in the synopsis doc: fast-import: contextualize the hardware cost Kyle Lippincott (1): test-lib: respect GIT_TEST_INSTALLED when querying default hash Leon Michalak (4): t: use test_grep in t3701 and t4055 t: use test_config in t4055 add-patch: respect diff.context configuration add-patch: add diff.context command line overrides Lidong Yan (17): sequencer: replace error() with BUG() in update_squash_messages () BUG(): remove leading underscore of the format string builtin/fetch-pack: cleanup before return error commit-graph: fix start_delayed_progress() leak repo_logmsg_reencode: fix memory leak when use repo_logmsg_reencode () builtin/submodule--helper: fix leak when remote_submodule_branch() failed pack-bitmap: remove checks before bitmap_free revision: fix memory leak in prepare_show_merge() git.c: remove the_repository dependence in run_builtin() pack-bitmap: reword comments in test_bitmap_commits() pack-bitmap: add load corrupt bitmap test bloom: add test helper to return murmur3 hash bloom: rename function operates on bloom_key bloom: replace struct bloom_key * with struct bloom_keyvec revision: make helper for pathspec to bloom keyvec bloom: optimize multiple pathspec items in revision pull: add pull.autoStash config option Lucas Seiki Oshiro (2): MyFirstContribution: use struct repository in examples MyFirstContribution: add walken.c to meson.build Mark Levedahl (71): git-gui: _which, only add .exe suffix if not present git-gui: use [is_Windows], not bad _shellpath git-gui: make _shellpath usable on startup git-gui: remove Tcl 8.4 workaround on 2>@1 redirection git-gui: use only the configured shell git-gui: remove HEAD detachment implementation for git < 1.5.3 git-gui: remove unused proc is_shellscript git-gui: avoid auto_execok for git-bash menu item git-gui: avoid auto_execok in do_windows_shortcut git-gui: cleanup git-bash menu item git-gui: assure PATH has only absolute elements. git-gui: sanitize $PATH on all platforms git-gui: override exec and open only on Windows gitk: require git >= 2.20 gitk: remove code targeting git <= 1.7.2 gitk: Make TclTk 8.6 the minimum, allow 8.7 gitk: remove implementations for Tcl/Tk < 8.6 gitk: use $config_variables as list for save/restore gitk: always use themed Tk (ttk) gitk: replace ${NS} with ttk gitk: remove non-ttk support code gitk: separate x11 / win32 / aqua Mouse bindings gitk: wheel scrolling multiplier preference gitk: mousewheel scrolling functions for Tk 8.6 gitk: update win32 scrolling for Tk 8.6 / TIP 171 gitk: update x11 scrolling for TclTk 8.6 / TIP 171 gitk: update aqua scrolling for TclTk 8.6 / TIP171 gitk: set config dialog color swatches in one place gitk: allow horizontal commit-graph scrolling gitk: restore ui colors after cancelling config dialog gitk: update scrolling for TclTk 8.7+ / TIP 474 gitk: switch to -translation binary gitk: Tcl9 doesn't expand ~, use $env(HOME) gitk: use -profile tcl8 for file input with Tcl 9 gitk: use -profile tcl8 on encoding conversions gitk: allow Tcl/Tk 9.0+ git-gui: require git >= 2.36 git-gui: Make TclTk 8.6 the minimum, allow 8.7 git-gui: git ls-files knows --exclude-standard git-gui: git-diff-index always knows submodules git-gui: use git-branch --show-current git-gui: git rev-parse knows show_toplevel git-gui: git-blame understands -w and textconv git-gui: git-diff knows submodules and textconv git-gui: git merge understands --strategy=recursive git-gui: git-remote is always available git-gui: use git_init to create new repository dir git-gui: remove unused git-version git-gui: remove unreachable Tk 8.4 code git-gui: remove redundant check for Tk >= 8.5 git-gui: always use themed widgets from ttk git-gui: remove ${NS} indirection for ttk git-gui: do not add directories to PATH on Windows git-gui: let nice work on Windows git-gui: Windows tk_getSaveFile is not useful for shortcuts git-gui: remove non-ttk code git-gui: use git-clone git-gui: default to full copy for linked worktrees git-gui: use dashless 'git cmd' form for read/write git-gui: remove procs gitexec and _git_cmd git-gui: eliminate _search_exe git-gui: use /cmd/git-gui.exe for shortcut git-gui: assure -eofchar {} on all channels git-gui: translation binary defines iso8859-1 git-gui: replace encoding binary with iso8859-1 git-gui: do not mix -translation binary and -encoding git-gui: remove EOL translation for gets git-gui: themed.tcl: use full namespace for color git-gui: use -profile tcl8 for file input with Tcl 9 git-gui: use -profile tcl8 on encoding conversions git-gui: Allow Tcl 9.0 Martin Storsjö (1): meson: tolerate errors from git ls-files --deduplicate Martin Ågren (1): diff-generate-patch.adoc: drop spurious backticks Matthias Aßhauer (1): mingw_open_existing: handle directories better Maxim Cournoyer (3): contrib: use a more portable shebang for git-credential-netrc contrib: warn for invalid netrc file ports in git-credential-netrc contrib: better support symbolic port names in git-credential-netrc Michael Rappazzo (4): gitk: sort by ref type on the 'tags and heads' view gitk: make 'sort-refs-by-type' optional and persistent gitk: separate upstream refs when using the sort-by-type option gitk: filter invisible upstream refs from reference list Orgad Shaneh (1): git-gui: strip the commit message after running commit-msg hook Ori Avtalion (1): gitk: Add user preference to hide specific references Patrick Steinhardt (111): contrib: remove "remotes2config.sh" contrib: remove "examples" directory contrib: remove remote-helper stubs contrib: remove "thunderbird-patch-inline" contrib: remove "hooks" directory contrib: remove "mw-to-git" contrib: remove "persistent-https" remote helper contrib: remove "git-resurrect.sh" contrib: remove "emacs" directory contrib: remove "git-new-workdir" contrib: remove some scripts in "stats" directory t: stop announcing prereqs t: silence output from `test_create_repo()` t9822: use prereq to check for ISO-8859-1 support t983*: use prereq to check for Python-specific git-p4(1) support t/test-lib: don't print shell traces to stdout t/test-lib: fix TAP format for BASH_XTRACEFD warning t7815: fix unexpectedly passing test on macOS test-lib: fail on unexpectedly passing tests meson: introduce kwargs variable for tests meson: parse TAP output generated by our tests builtin/gc: use designated field initializers for maintenance tasks builtin/gc: drop redundant local variable builtin/maintenance: centralize configuration of explicit tasks builtin/maintenance: mark "--task=" and "--schedule=" as incompatible builtin/maintenance: stop modifying global array of tasks builtin/maintenance: extract function to run tasks builtin/maintenance: fix typedef for function pointers builtin/maintenance: split into foreground and background tasks builtin/maintenance: fix locking race with refs and reflogs tasks usage: allow dying without writing an error message builtin/gc: avoid global state in `gc_before_repack()` builtin/maintenance: fix locking race when handling "gc" task object-store: rename `raw_object_store` to `object_database` object-store: rename `object_directory` to `odb_source` object-store: rename files to "odb.{c,h}" odb: introduce parent pointers odb: get rid of `the_repository` in `find_odb()` odb: get rid of `the_repository` in `assert_oid_type()` odb: get rid of `the_repository` in `odb_mkstemp()` odb: get rid of `the_repository` when handling alternates odb: get rid of `the_repository` in `for_each()` functions odb: get rid of `the_repository` when handling the primary source odb: get rid of `the_repository` when handling submodule sources odb: trivial refactorings to get rid of `the_repository` odb: rename `oid_object_info()` odb: rename `repo_read_object_file()` odb: rename `has_object()` odb: rename `pretend_object_file()` odb: rename `read_object_with_reference()` BreakingChanges: announce switch to "reftable" format setup: use "reftable" format when experimental features are enabled t4150: fix warning printed by awk due to escaped '\@' t5333: fix missing terminator for sed(1) 's' command docs/git-pack-refs: document heuristic used for packing loose refs refs/files: remove empty parent dirs when ref creation fails t1006: fix broken TAP format meson: stop discovering native version of Python meson: stop printing 'https' option twice in our summaries meson: improve summary of auto-detected features meson: clean up unnecessary variables meson: fix lookup of shell on MINGW64 sane-ctype: fix compiler error on Amazon Linux 2 meson: update subproject wrappers ci: use Meson's new `--slice` option midx: start tracking per object database source packfile: refactor `prepare_packed_git_one()` to work on sources midx: stop using linked list when closing MIDX packfile: refactor `get_multi_pack_index()` to work on sources packfile: stop using linked MIDX list in `find_pack_entry()` packfile: stop using linked MIDX list in `get_all_packs()` midx: remove now-unused linked list of multi-pack indices object-file: fix -Wsign-compare warnings object-file: stop using `the_hash_algo` object-file: get rid of `the_repository` in `has_loose_object()` object-file: inline `check_and_freshen()` functions object-file: get rid of `the_repository` when freshening objects object-file: get rid of `the_repository` in `loose_object_info()` object-file: get rid of `the_repository` in `finalize_object_file()` loose: write loose objects map via their source odb: introduce `odb_write_object()` object-file: get rid of `the_repository` when writing objects object-file: inline `for_each_loose_file_in_objdir_buf()` object-file: remove declaration for `for_each_file_in_obj_subdir()` object-file: get rid of `the_repository` in loose object iterators object-file: get rid of `the_repository` in `read_loose_object()` object-file: get rid of `the_repository` in `force_object_loose()` object-file: get rid of `the_repository` in index-related functions config: drop `git_config()` wrapper config: drop `git_config_clear()` wrapper config: drop `git_config_get()` wrapper config: drop `git_config_get_value()` wrapper config: drop `git_config_get_value()` wrapper config: drop `git_config_get_string_multi()` wrapper config: drop `git_config_get_string()` wrapper config: drop `git_config_get_string()` wrapper config: drop `git_config_get_int()` wrapper config: drop `git_config_get_ulong()` wrapper config: drop `git_config_get_bool()` wrapper config: drop `git_config_set_in_file()` wrapper config: drop `git_config_set_gently()` wrapper config: drop `git_config_set()` wrapper config: drop `git_config_set_in_file_gently()` wrapper config: drop `git_config_set_multivar_in_file_gently()` wrapper config: drop `git_config_get_multivar_gently()` wrapper config: drop `git_config_set_multivar()` wrapper config: remove unused `the_repository` wrappers config: move Git config parsing into "environment.c" config: fix sign comparison warnings meson: ensure correct "clar-decls.h" header is used Documentation/RelNotes/2.51.0: improve wording for a couple entries Patrick Steinhardt' via Git Security (1): bundle-uri: fix arbitrary file writes via parameter injection Patrik Weiskircher (2): contrib/subtree: parse using --stuck-long contrib/subtree: add -S/--gpg-sign Phil Hord (3): fetch-prune: optimize dangling-ref reporting refs: remove old refs_warn_dangling_symref clean up interface for refs_warn_dangling_symrefs Phillip Wood (6): stash: allow "git stash -p <pathspec>" to assume push again stash: allow "git stash [<options>] --patch <pathspec>" to assume push config: remove unneeded struct field CodingGuidelines: allow the use of bool git-compat-util: convert string predicates to return bool strbuf: convert predicates to return bool Ramsay Jones (4): test-lib: add missing prerequisites for Darwin build: fix FreeBSD build when sysinfo compat library installed meson: fix installation when -Dlibexexdir is set po/meson.build: add missing 'ga' language code Raymond E. Pasco (4): apply: read in the index in --intent-to-add mode apply: only write intents to add for new files t4140: test apply --intent-to-add interactions apply docs: clarify wording for --intent-to-add René Scharfe (11): parse-options: require PARSE_OPT_NOARG for OPTION_BITOP parse-options: add precision handling for PARSE_OPT_CMDMODE parse-options: add precision handling for OPTION_SET_INT parse-options: add precision handling for OPTION_BIT parse-options: add precision handling for OPTION_NEGBIT parse-options: add precision handling for OPTION_BITOP parse-options: add precision handling for OPTION_COUNTUP commit: convert pop_most_recent_commit() to prio_queue prio-queue: add prio_queue_replace() commit: use prio_queue_replace() in pop_most_recent_commit() git: show alias info only with lone -h Rodrigo Carvalho (1): userdiff: add support for R programming language Rodrigo Michelassi (1): t2400: replace 'test -[efd]' with 'test_path_is_*' Russell Hanneken (1): doc: correct doc for glob pathspec Sebastian Andrzej Siewior (5): bswap.h: add support for __BYTE_ORDER__ bswap.h: define GIT_LITTLE_ENDIAN on msvc as little endian bswap.h: always overwrite ntohl/ ntohll macros bswap.h: remove optimized x86 version of bswap32/64 bswap.h: provide a built-in based version of bswap32/64 if possible Seyi Kuforiji (10): t/unit-tests: implement clar specific reftable test helper functions t/unit-tests: convert reftable basics test to use clar test framework t/unit-tests: convert reftable block test to use clar t/unit-tests: convert reftable merged test to use clar t/unit-tests: convert reftable pq test to use clar t/unit-tests: convert reftable table test to use clar t/unit-tests: convert reftable readwrite test to use clar t/unit-tests: convert reftable record test to use clar t/unit-tests: convert reftable stack test to use clar t/unit-tests: finalize migration of reftable-related tests Siddharth Asthana (1): cat-file: fix mailmap application for different author and committer Takashi Iwai (3): gitk: Add support of SHA256 repositories git-gui: Replace null_sha1 with nullid git-gui: Add support of SHA256 repo Taylor Blau (18): wincred: avoid buffer overflow in wcsncat() Git 2.43.7 Git 2.44.4 Git 2.45.4 Git 2.46.4 Git 2.47.3 Git 2.48.2 pack-objects: use standard option incompatibility functions pack-objects: limit scope in 'add_object_entry_from_pack()' pack-objects: factor out handling '--stdin-packs' pack-objects: declare 'rev_info' for '--stdin-packs' earlier pack-objects: perform name-hash traversal for unpacked objects pack-objects: fix typo in 'show_object_pack_hint()' pack-objects: swap 'show_{object,commit}_pack_hint' pack-objects: introduce '--stdin-packs=follow' repack: exclude cruft pack(s) from the MIDX where possible pack-bitmap: fix memory leak if load_bitmap() failed Documentation/RelNotes: use .adoc extension for new security releases Timur Sultanaev (1): docs: correct ORIG_HEAD example in "git merge" documentation Todd Zullinger (1): t: avoid git config syntax from newer releases Victoria Dye (3): t1006: update 'run_tests' to test generic object specifiers cat-file: add %(objectmode) atom cat-file.c: add batch handling for submodules brian m. carlson (16): object-name: make get_oid quietly return an error builtin/stash: factor out revision parsing into a function builtin/stash: provide a way to export stashes to a ref builtin/stash: provide a way to import stashes from a ref hash: add a constant for the default hash algorithm hash: add a constant for the legacy hash algorithm builtin: use default hash when outside a repository Use legacy hash for legacy formats setup: use the default algorithm to initialize repo format t: default to compile-time default hash if not set t1007: choose the built-in hash outside of a repo t4042: choose the built-in hash outside of a repo t5300: choose the built-in hash outside of a repo help: add a build option for default hash Enable SHA-256 by default in breaking changes mode SubmittingPatches: allow non-real name contributions chenjianhu (1): t7450: inspect the correct path a broken code would write to redoste (1): ssh signing: don't detach the filename strbuf from key_file tempfile shejialuo (8): string-list: fix sign compare warnings for loop iterator string-list: remove unused "insert_at" parameter from add_entry string-list: return index directly when inserting an existing element string-list: enable sign compare warnings check u-string-list: move "test_split" into "u-string-list.c" u-string-list: move "test_split_in_place" to "u-string-list.c" u-string-list: move "filter string" test to "u-string-list.c" u-string-list: move "remove duplicates" test to "u-string-list.c" Øystein Walle (1): rebase: write script before initializing state