Re: [ANNOUNCE] Git v2.25.0-rc0

From: Denton Liu
Date: Wed Dec 25 2019 - 19:34:08 EST


Thanks for your hard work, Junio. Merry Christmas!

On Wed, Dec 25, 2019 at 01:44:54PM -0800, Junio C Hamano wrote:
>
> An early preview release Git v2.25.0-rc0 is now available for
> testing at the usual places. It is comprised of 531 non-merge
> commits since v2.24.0, contributed by 61 people, 24 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.25.0-rc0' tag and the 'master' branch that the tag points at:
>
> 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.24.0 are as follows.
> Welcome to the Git development community!
>
> Colin Stolley, Doan Tran Cong Danh, Dominic JÃger, Erik Chen,
> Hariom Verma, Heba Waly, James Coglan, James Shubin, Josh
> Holland, Åukasz Niemier, Manish Goregaokar, Matthew Rogers,
> Mihail Atanassov, Miriam Rubio, Nathan Stocks, Naveen Nathan,
> Nika Layzell, Philippe Blain, Prarit Bhargava, r.burenkov,
> Ruud van Asseldonk, ryenus, Slavica ÄukiÄ, and Utsav Shah.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Alban Gruin, Alexandr Miloslavskiy, Andreas Schwab, Andrei Rybak,
> brian m. carlson, Daniel Ferreira, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Ed Maste, Elia Pinto, Elijah Newren, Emily
> Shaffer, Garima Singh, Hans Jerry Illikainen, Jean-NoÃl Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Jonathan Nieder,
> Jonathan Tan, Junio C Hamano, Kevin Willford, Martin Ãgren,
> Mike Hommey, Philip Oakley, Phillip Wood, Pratyush Yadav,
> Ralf Thielow, Renà Scharfe, Robin H. Johnson, Rohit Ashiwal,
> SZEDER GÃbor, Tanushree Tumane, Thomas Gummerer, Todd Zullinger,
> and William Baker.
>
> ----------------------------------------------------------------
>
> Git 2.25 Release Notes (draft)
> ==============================
>
> Updates since v2.24
> -------------------
>
> Backward compatibility notes
>
>
> UI, Workflows & Features
>
> * A tutorial on object enumeration has been added.
>
> * The branch description ("git branch --edit-description") has been
> used to fill the body of the cover letters by the format-patch
> command; this has been enhanced so that the subject can also be
> filled.
>
> * "git rebase --preserve-merges" has been marked as deprecated; this
> release stops advertising it in the "git rebase -h" output.
>
> * The code to generate multi-pack index learned to show (or not to
> show) progress indicators.
>
> * "git apply --3way" learned to honor merge.conflictStyle
> configuration variable, like merges would.
>
> * The custom format for "git log --format=<format>" learned the l/L
> placeholder that is similar to e/E that fills in the e-mail
> address, but only the local part on the left side of '@'.
>
> * Documentation pages for "git shortlog" now list commit limiting
> options explicitly.
>
> * The patterns to detect function boundary for Elixir language has
> been added.
>
> * The completion script (in contrib/) learned that the "--onto"
> option of "git rebase" can take its argument as the value of the
> option.
>
> * The userdiff machinery has been taught that "async def" is another
> way to begin a "function" in Python.
>
> * "git range-diff" learned to take the "--notes=<ref>" and the
> "--no-notes" options to control the commit notes included in the
> log message that gets compared.
>
> * "git rev-parse --show-toplevel" run outside of any working tree did
> not error out, which has been corrected.
>
> * A few commands learned to take the pathspec from the standard input
> or a named file, instead of taking it as the command line
> arguments, with the "--pathspec-from-file" option.
>
> * "git rebase -i" learned a few options that are known by "git
> rebase" proper.
>
> * "git submodule" learned a subcommand "set-url".
>
> * "git log" family learned "--pretty=reference" that gives the name
> of a commit in the format that is often used to refer to it in log
> messages.
>
> * The interaction between "git clone --recurse-submodules" and
> alternate object store was ill-designed. The documentation and
> code have been taught to make more clear recommendations when the
> users see failures.
>
> * Management of sparsely checked-out working tree has gained a
> dedicated "sparse-checkout" command.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * Debugging support for lazy cloning has been a bit improved.
>
> * Move the definition of a set of bitmask constants from 0ctal
> literal to (1U<<count) notation.
>
> * Test updates to prepare for SHA-2 transition continues.
>
> * Crufty code and logic accumulated over time around the object
> parsing and low-level object access used in "git fsck" have been
> cleaned up.
>
> * The implementation of "git log --graph" got refactored and then its
> output got simplified.
>
> * Follow recent push to move API docs from Documentation/ to header
> files and update config.h
>
> * "git bundle" has been taught to use the parse options API. "git
> bundle verify" learned "--quiet" and "git bundle create" learned
> options to control the progress output.
>
> * Handling of commit objects that use non UTF-8 encoding during
> "rebase -i" has been improved.
>
> * The beginning of rewriting "git add -i" in C.
>
> * A label used in the todo list that are generated by "git rebase
> --rebase-merges" is used as a part of a refname; the logic to come
> up with the label has been tightened to avoid names that cannot be
> used as such.
>
> * The logic to avoid duplicate label names generated by "git rebase
> --rebase-merges" forgot that the machinery itself uses "onto" as a
> label name, which must be avoided by auto-generated labels, which
> has been corrected.
>
> * We have had compatibility fallback macro definitions for "PRIuMAX",
> "PRIu32", etc. but did not for "PRIdMAX", while the code used the
> last one apparently without any hiccup reported recently. The
> fallback macro definitions for these <inttypes.h> macros that must
> appear in C99 systems have been removed.
>
> * Recently we have declared that GIT_TEST_* variables take the
> usual boolean values (it used to be that some used "non-empty
> means true" and taking GIT_TEST_VAR=YesPlease as true); make
> sure we notice and fail when non-bool strings are given to
> these variables.
>
> * Users of oneway_merge() (like "reset --hard") learned to take
> advantage of fsmonitor to avoid unnecessary lstat(2) calls.
>
> * Performance tweak on "git push" into a repository with many refs
> that point at objects we have never heard of.
>
> * PerfTest fix to avoid stale result mixed up with the latest round
> of test results.
>
> * Hide lower-level verify_signed-buffer() API as a pure helper to
> implement the public check_signature() function, in order to
> encourage new callers to use the correct and more strict
> validation.
>
> * Unnecessary reading of state variables back from the disk during
> sequencer operation has been reduced.
>
> * The code has been made to avoid gmtime() and localtime() and prefer
> their reentrant counterparts.
>
> * The effort to reimplement "git add -i" in C continues.
>
> * In a repository with many packfiles, the cost of the procedure that
> avoids registering the same packfile twice was unnecessarily high
> by using an inefficient search algorithm, which has been corrected.
>
> * Redo "git name-rev" to avoid recursive calls.
>
>
> Fixes since v2.24
> -----------------
>
> * "rebase -i" ceased to run post-commit hook by mistake in an earlier
> update, which has been corrected.
>
> * "git notes copy $original" ought to copy the notes attached to the
> original object to HEAD, but a mistaken tightening to command line
> parameter validation made earlier disabled that feature by mistake.
>
> * When all files from some subdirectory were renamed to the root
> directory, the directory rename heuristics would fail to detect that
> as a rename/merge of the subdirectory to the root directory, which has
> been corrected.
>
> * Code clean-up and a bugfix in the logic used to tell worktree local
> and repository global refs apart.
> (merge f45f88b2e4 sg/dir-trie-fixes later to maint).
>
> * "git stash save" in a working tree that is sparsely checked out
> mistakenly removed paths that are outside the area of interest.
> (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
>
> * "git rev-parse --git-path HEAD.lock" did not give the right path
> when run in a secondary worktree.
> (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
>
> * "git merge --no-commit" needs "--no-ff" if you do not want to move
> HEAD, which has been corrected in the manual page for "git bisect".
> (merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
>
> * "git worktree add" internally calls "reset --hard" that should not
> descend into submodules, even when submodule.recurse configuration
> is set, but it was affected. This has been corrected.
> (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
>
> * Messages from die() etc. can be mixed up from multiple processes
> without even line buffering on Windows, which has been worked
> around.
> (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
>
> * HTTP transport had possible allocator/deallocator mismatch, which
> has been corrected.
>
> * The watchman integration for fsmonitor was racy, which has been
> corrected to be more conservative.
> (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
>
> * Fetching from multiple remotes into the same repository in parallel
> had a bad interaction with the recent change to (optionally) update
> the commit-graph after a fetch job finishes, as these parallel
> fetches compete with each other. Which has been corrected.
>
> * Recent update to "git stash pop" made the command empty the index
> when run with the "--quiet" option, which has been corrected.
>
> * "git fetch" codepath had a big "do not lazily fetch missing objects
> when I ask if something exists" switch. This has been corrected by
> marking the "does this thing exist?" calls with "if not please do not
> lazily fetch it" flag.
>
> * Test update to avoid wasted cycles.
> (merge e0316695ec sg/skip-skipped-prereq later to maint).
>
> * Error handling after "git push" finishes sending the packdata and
> waits for the response to the remote side has been improved.
> (merge ad7a403268 jk/send-pack-remote-failure later to maint).
>
> * Some codepaths in "gitweb" that forgot to escape URLs generated
> based on end-user input have been corrected.
> (merge a376e37b2c jk/gitweb-anti-xss later to maint).
>
> * CI jobs for macOS has been made less chatty when updating perforce
> package used during testing.
> (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
>
> * "git unpack-objects" used to show progress based only on the number
> of received and unpacked objects, which stalled when it has to
> handle an unusually large object. It now shows the throughput as
> well.
> (merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
>
> * The sequencer machinery compared the HEAD and the state it is
> attempting to commit to decide if the result would be a no-op
> commit, even when amending a commit, which was incorrect, and
> has been corrected.
>
> * The code to parse GPG output used to assume incorrectly that the
> finterprint for the primary key would always be present for a valid
> signature, which has been corrected.
> (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
>
> * "git submodule status" and "git submodule status --cached" show
> different things, but the documentation did not cover them
> correctly, which has been corrected.
> (merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
>
> * "git reset --patch $object" without any pathspec should allow a
> tree object to be given, but incorrectly required a committish,
> which has been corrected.
>
> * "git submodule status" that is run from a subdirectory of the
> superproject did not work well, which has been corrected.
> (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
>
> * The revision walking machinery uses resources like per-object flag
> bits that need to be reset before a new iteration of walking
> begins, but the resources related to topological walk were not
> cleared correctly, which has been corrected.
> (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
>
> * TravisCI update.
> (merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
>
> * While running "revert" or "cherry-pick --edit" for multiple
> commits, a recent regression incorrectly detected "nothing to
> commit, working tree clean", instead of replaying the commits,
> which has been corrected.
> (merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
>
> * Work around a issue where a FD that is left open when spawning a
> child process and is kept open in the child can interfere with the
> operation in the parent process on Windows.
>
> * One kind of progress messages were always given during commit-graph
> generation, instead of following the "if it takes more than two
> seconds, show progress" pattern, which has been corrected.
>
> * "git rebase" did not work well when format.useAutoBase
> configuration variable is set, which has been corrected.
>
> * The "diff" machinery learned not to lose added/removed blank lines
> in the context when --ignore-blank-lines and --function-context are
> used at the same time.
> (merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
>
> * The test on "fast-import" used to get stuck when "fast-import" died
> in the middle.
> (merge 0d9b0d7885 sg/t9300-robustify later to maint).
>
> * "git format-patch" can take a set of configured format.notes values
> to specify which notes refs to use in the log message part of the
> output. The behaviour of this was not consistent with multiple
> --notes command line options, which has been corrected.
> (merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
>
> * "git p4" used to ignore lfs.storage configuration variable, which
> has been corrected.
> (merge ea94b16fb8 rb/p4-lfs later to maint).
>
> * Assorted fixes to the directory traversal API.
> (merge 6836d2fe06 en/fill-directory-fixes later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
> (merge 8b656572ca sg/commit-graph-usage-fix later to maint).
> (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
> (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
> (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
> (merge 270de6acbe en/t6024-style later to maint).
> (merge 14c4776d75 ns/test-desc-typofix later to maint).
> (merge 68d40f30c4 dj/typofix-merge-strat later to maint).
> (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
> (merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
> (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
> (merge b018719927 ma/t7004 later to maint).
> (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
> (merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
> (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
> (merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
> (merge 2a02262078 dl/t5520-cleanup later to maint).
> (merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
> (merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
> (merge 3eae30e464 jk/lore-is-the-archive later to maint).
> (merge 14b7664df8 dl/lore-is-the-archive later to maint).
> (merge 0e40a73a4c po/bundle-doc-clonable later to maint).
> (merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
> (merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
> (merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
> (merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
> (merge 11de8dd7ef dr/branch-usage-casefix later to maint).
> (merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
> (merge 147ee35558 rs/commit-export-env-simplify later to maint).
> (merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
> (merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
> (merge cc2bd5c45d pb/submodule-doc-xref later to maint).
> (merge df5be01669 ja/doc-markup-cleanup later to maint).
> (merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.24.0 are as follows:
>
> Alban Gruin (6):
> sequencer: update `total_nr' when adding an item to a todo list
> sequencer: update `done_nr' when skipping commands in a todo list
> sequencer: move the code writing total_nr on the disk to a new function
> rebase: fill `squash_onto' in get_replay_opts()
> sequencer: directly call pick_commits() from complete_action()
> sequencer: fix a memory leak in sequencer_continue()
>
> Alexandr Miloslavskiy (14):
> parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
> pathspec: add new function to parse file
> doc: reset: synchronize <pathspec> description
> reset: support the `--pathspec-from-file` option
> doc: commit: synchronize <pathspec> description
> commit: support the --pathspec-from-file option
> cmd_add: prepare for next patch
> add: support the --pathspec-from-file option
> doc: checkout: remove duplicate synopsis
> doc: checkout: fix broken text reference
> doc: checkout: synchronize <pathspec> description
> doc: restore: synchronize <pathspec> description
> checkout, restore: support the --pathspec-from-file option
> commit: forbid --pathspec-from-file --all
>
> Andreas Schwab (1):
> t7812: add missing redirects
>
> Andrei Rybak (1):
> INSTALL: use existing shell scripts as example
>
> Colin Stolley (1):
> packfile.c: speed up loading lots of packfiles
>
> Daniel Ferreira (2):
> diff: export diffstat interface
> built-in add -i: implement the `status` command
>
> Denton Liu (93):
> format-patch: replace erroneous and condition
> format-patch: use enum variables
> format-patch: teach --cover-from-description option
> rebase: hide --preserve-merges option
> t4108: replace create_file with test_write_lines
> t4108: remove git command upstream of pipe
> t4108: use `test_config` instead of `git config`
> t4108: demonstrate bug in apply
> apply: respect merge.conflictStyle in --3way
> submodule: teach set-url subcommand
> git-diff.txt: document return code of `--no-index`
> completion: learn to complete `git rebase --onto=`
> t4215: use helper function to check output
> argv-array: add space after `while`
> rev-list-options.txt: remove reference to --show-notes
> SubmittingPatches: use generic terms for hash
> pretty-formats.txt: use generic terms for hash
> SubmittingPatches: remove dq from commit reference
> completion: complete `tformat:` pretty format
> revision: make get_revision_mark() return const pointer
> pretty.c: inline initalize format_context
> t4205: cover `git log --reflog -z` blindspot
> pretty: add struct cmt_fmt_map::default_date_mode_type
> pretty: implement 'reference' format
> SubmittingPatches: use `--pretty=reference`
> pretty-options.txt: --notes accepts a ref instead of treeish
> t3206: remove spaces after redirect operators
> t3206: disable parameter substitution in heredoc
> t3206: s/expected/expect/
> t3206: range-diff compares logs with commit notes
> range-diff: output `## Notes ##` header
> range-diff: pass through --notes to `git log`
> format-patch: pass notes configuration to range-diff
> t0000: test multiple local assignment
> t: teach test_cmp_rev to accept ! for not-equals
> t5520: improve test style
> t5520: use sq for test case names
> t5520: let sed open its own input
> t5520: replace test -f with test-lib functions
> t5520: remove spaces after redirect operator
> t5520: use test_line_count where possible
> t5520: replace test -{n,z} with test-lib functions
> t5520: use test_cmp_rev where possible
> t5520: test single-line files by git with test_cmp
> t5520: don't put git in upstream of pipe
> t5520: replace $(cat ...) comparison with test_cmp
> t5520: remove redundant lines in test cases
> t5520: replace `! git` with `test_must_fail git`
> lib-bash.sh: move `then` onto its own line
> apply-one-time-sed.sh: modernize style
> t0014: remove git command upstream of pipe
> t0090: stop losing return codes of git commands
> t3301: stop losing return codes of git commands
> t3600: use test_line_count() where possible
> t3600: stop losing return codes of git commands
> t3600: comment on inducing SIGPIPE in `git rm`
> t4015: stop losing return codes of git commands
> t4015: use test_write_lines()
> t4138: stop losing return codes of git commands
> t5317: stop losing return codes of git commands
> t5317: use ! grep to check for no matching lines
> t5703: simplify one-time-sed generation logic
> t5703: stop losing return codes of git commands
> t7501: remove spaces after redirect operators
> t7501: stop losing return codes of git commands
> t7700: drop redirections to /dev/null
> t7700: remove spaces after redirect operators
> t7700: move keywords onto their own line
> t7700: s/test -f/test_path_is_file/
> doc: replace MARC links with lore.kernel.org
> RelNotes: replace Gmane with real Message-IDs
> doc: replace LKML link with lore.kernel.org
> t7700: consolidate code into test_no_missing_in_packs()
> t7700: consolidate code into test_has_duplicate_object()
> t7700: replace egrep with grep
> t7700: make references to SHA-1 generic
> t7700: stop losing return codes of git commands
> t3400: demonstrate failure with format.useAutoBase
> format-patch: fix indentation
> t4014: use test_config()
> format-patch: teach --no-base
> rebase: fix format.useAutoBase breakage
> t3206: fix incorrect test name
> range-diff: mark pointers as const
> range-diff: clear `other_arg` at end of function
> notes: rename to load_display_notes()
> notes: create init_display_notes() helper
> notes: extract logic into set_display_notes()
> format-patch: use --notes behavior for format.notes
> format-patch: move git_config() before repo_init_revisions()
> config/format.txt: clarify behavior of multiple format.notes
> notes: break set_display_notes() into smaller functions
> notes.h: fix typos in comment
>
> Derrick Stolee (22):
> test-tool: use 'read-graph' helper
> sparse-checkout: create builtin with 'list' subcommand
> sparse-checkout: create 'init' subcommand
> clone: add --sparse mode
> sparse-checkout: 'set' subcommand
> sparse-checkout: add '--stdin' option to set subcommand
> sparse-checkout: create 'disable' subcommand
> sparse-checkout: add 'cone' mode
> sparse-checkout: use hashmaps for cone patterns
> sparse-checkout: init and set in cone mode
> unpack-trees: hash less in cone mode
> unpack-trees: add progress to clear_ce_flags()
> sparse-checkout: sanitize for nested folders
> sparse-checkout: update working directory in-process
> sparse-checkout: use in-process update for disable subcommand
> sparse-checkout: write using lockfile
> sparse-checkout: cone mode should not interact with .gitignore
> sparse-checkout: update working directory in-process for 'init'
> sparse-checkout: check for dirty status
> progress: create GIT_PROGRESS_DELAY
> commit-graph: use start_delayed_progress()
> sparse-checkout: respect core.ignoreCase in cone mode
>
> Dimitriy Ryazantcev (1):
> l10n: minor case fix in 'git branch' '--unset-upstream' description
>
> Doan Tran Cong Danh (14):
> t3301: test diagnose messages for too few/many paramters
> notes: fix minimum number of parameters to "copy" subcommand
> t0028: eliminate non-standard usage of printf
> configure.ac: define ICONV_OMITS_BOM if necessary
> t3900: demonstrate git-rebase problem with multi encoding
> sequencer: reencode to utf-8 before arrange rebase's todo list
> sequencer: reencode revert/cherry-pick's todo list
> sequencer: reencode squashing commit's message
> sequencer: reencode old merge-commit message
> sequencer: reencode commit message for am/rebase --show-current-patch
> sequencer: handle rebase-merges for "onto" message
> date.c: switch to reentrant {gm,local}time_r
> archive-zip.c: switch to reentrant localtime_r
> mingw: use {gm,local}time_s as backend for {gm,local}time_r
>
> Dominic JÃger (1):
> merge-strategies: fix typo "reflected to" to "reflected in"
>
> Ed Maste (3):
> t4210: skip i18n tests that don't work on FreeBSD
> userdiff: remove empty subexpression from elixir regex
> sparse-checkout: improve OS ls compatibility
>
> Elia Pinto (1):
> kset.h, tar.h: add missing header guard to prevent multiple inclusion
>
> Elijah Newren (26):
> merge-recursive: clean up get_renamed_dir_portion()
> merge-recursive: fix merging a subdirectory into the root directory
> t604[236]: do not run setup in separate tests
> Documentation: fix a bunch of typos, both old and new
> Fix spelling errors in documentation outside of Documentation/
> git-filter-branch.txt: correct argument name typo
> hashmap: fix documentation misuses of -> versus .
> name-hash.c: remove duplicate word in comment
> t6024: modernize style
> Fix spelling errors in code comments
> Fix spelling errors in comments of testcases
> Fix spelling errors in names of tests
> Fix spelling errors in messages shown to users
> Fix spelling errors in test commands
> sha1dc: fix trivial comment spelling error
> multimail: fix a few simple spelling errors
> Fix spelling errors in no-longer-updated-from-upstream modules
> t3011: demonstrate directory traversal failures
> Revert "dir.c: make 'git-status --ignored' work within leading directories"
> dir: remove stray quote character in comment
> dir: exit before wildcard fall-through if there is no wildcard
> dir: break part of read_directory_recursive() out for reuse
> t3434: mark successful test as such
> dir: fix checks on common prefix directory
> dir: synchronize treat_leading_path() and read_directory_recursive()
> dir: consolidate similar code in treat_directory()
>
> Emily Shaffer (4):
> documentation: add tutorial for object walking
> myfirstcontrib: add 'psuh' to command-list.txt
> myfirstcontrib: add dependency installation step
> myfirstcontrib: hint to find gitgitgadget allower
>
> Erik Chen (1):
> fetch: add trace2 instrumentation
>
> Garima Singh (2):
> test-path-utils: offer to run a protectNTFS/protectHFS benchmark
> tests: add a helper to stress test argument quoting
>
> Hans Jerry Illikainen (4):
> gpg-interface: refactor the free-and-xmemdupz pattern
> gpg-interface: limit search for primary key fingerprint
> gpg-interface: prefer check_signature() for GPG verification
> grep: don't return an expression from pcre2_free()
>
> Hariom Verma (2):
> builtin/blame.c: constants into bit shift format
> git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
>
> Heba Waly (22):
> config: move documentation to config.h
> documentation: remove empty doc files
> diff: move doc to diff.h and diffcore.h
> dir: move doc to dir.h
> graph: move doc to graph.h and graph.c
> merge: move doc to ll-merge.h
> sha1-array: move doc to sha1-array.h
> remote: move doc to remote.h and refspec.h
> refs: move doc to refs.h
> attr: move doc to attr.h
> revision: move doc to revision.h
> pathspec: move doc to pathspec.h
> sigchain: move doc to sigchain.h
> cache: move doc to cache.h
> argv-array: move doc to argv-array.h
> credential: move doc to credential.h
> parse-options: add link to doc file in parse-options.h
> run-command: move doc to run-command.h
> trace: move doc to trace.h
> tree-walk: move doc to tree-walk.h
> submodule-config: move doc to submodule-config.h
> trace2: move doc to trace2.h
>
> James Coglan (13):
> graph: automatically track display width of graph lines
> graph: handle line padding in `graph_next_line()`
> graph: reuse `find_new_column_by_commit()`
> graph: reduce duplication in `graph_insert_into_new_columns()`
> graph: remove `mapping_idx` and `graph_update_width()`
> graph: extract logic for moving to GRAPH_PRE_COMMIT state
> graph: example of graph output that can be simplified
> graph: tidy up display of left-skewed merges
> graph: commit and post-merge lines for left-skewed merges
> graph: rename `new_mapping` to `old_mapping`
> graph: smooth appearance of collapsing edges on commit lines
> graph: flatten edges that fuse with their right neighbor
> graph: fix coloring of octopus dashes
>
> James Shubin (1):
> completion: tab-complete "git svn --recursive"
>
> Jean-NoÃl Avila (2):
> doc: remove non pure ASCII characters
> doc: indent multi-line items in list
>
> Jeff Hostetler (1):
> trace2: add region in clear_ce_flags
>
> Jeff King (44):
> parse_commit_buffer(): treat lookup_commit() failure as parse error
> parse_commit_buffer(): treat lookup_tree() failure as parse error
> parse_tag_buffer(): treat NULL tag pointer as parse error
> commit, tag: don't set parsed bit for parse failures
> fsck: stop checking commit->tree value
> fsck: stop checking commit->parent counts
> fsck: stop checking tag->tagged
> fsck: require an actual buffer for non-blobs
> fsck: unify object-name code
> fsck_describe_object(): build on our get_object_name() primitive
> fsck: use oids rather than objects for object_name API
> fsck: don't require object structs for display functions
> fsck: only provide oid/type in fsck_error callback
> fsck: only require an oid for skiplist functions
> fsck: don't require an object struct for report()
> fsck: accept an oid instead of a "struct blob" for fsck_blob()
> fsck: drop blob struct from fsck_finish()
> fsck: don't require an object struct for fsck_ident()
> fsck: don't require an object struct in verify_headers()
> fsck: rename vague "oid" local variables
> fsck: accept an oid instead of a "struct tag" for fsck_tag()
> fsck: accept an oid instead of a "struct commit" for fsck_commit()
> fsck: accept an oid instead of a "struct tree" for fsck_tree()
> hex: drop sha1_to_hex_r()
> pack-objects: avoid pointless oe_map_new_pack() calls
> hex: drop sha1_to_hex()
> send-pack: check remote ref status on pack-objects failure
> t9502: pass along all arguments in xss helper
> t/gitweb-lib.sh: drop confusing quotes
> t/gitweb-lib.sh: set $REQUEST_URI
> gitweb: escape URLs generated by href()
> rev-parse: make --show-toplevel without a worktree an error
> perf-lib: use a single filename for all measurement types
> t/perf: don't depend on Git.pm
> send-pack: use OBJECT_INFO_QUICK to check negative objects
> doc: recommend lore.kernel.org over public-inbox.org
> doc: replace public-inbox links with lore.kernel.org
> t9300: drop some useless uses of cat
> t9300: create marks files for double-import-marks test
> fast-import: tighten parsing of boolean command line options
> fast-import: stop creating leading directories for import-marks
> fast-import: delay creating leading directories for export-marks
> fast-import: disallow "feature export-marks" by default
> fast-import: disallow "feature import-marks" by default
>
> Johannes Schindelin (93):
> t1400: wrap setup code in test case
> git_path(): handle `.lock` files correctly
> vreportf(): avoid relying on stdio buffering
> update-index: optionally leave skip-worktree entries alone
> stash: handle staged changes in skip-worktree files correctly
> fetch: add the command-line option `--write-commit-graph`
> fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
> remote-curl: unbreak http.extraHeader with custom allocators
> Start to implement a built-in version of `git add --interactive`
> built-in add -i: implement the main loop
> built-in add -i: show unique prefixes of the commands
> built-in add -i: support `?` (prompt help)
> rebase-merges: move labels' whitespace mangling into `label_oid()`
> git svn: stop using `rebase --preserve-merges`
> mingw: demonstrate that all file handles are inherited by child processes
> mingw: work around incorrect standard handles
> mingw: spawned processes need to inherit only standard handles
> mingw: restrict file handle inheritance only on Windows 7 and later
> mingw: do set `errno` correctly when trying to restrict handle inheritance
> add-interactive: make sure to release `rev.prune_data`
> built-in add -i: allow filtering the modified files list
> built-in add -i: prepare for multi-selection commands
> built-in add -i: implement the `update` command
> built-in add -i: re-implement `revert` in C
> built-in add -i: re-implement `add-untracked` in C
> built-in add -i: implement the `patch` command
> built-in add -i: re-implement the `diff` command
> built-in add -i: offer the `quit` command
> pkt-line: fix a typo
> mingw: forbid translating ERROR_SUCCESS to an errno value
> clone --recurse-submodules: prevent name squatting on Windows
> mingw: disallow backslash characters in tree objects' file names
> path.c: document the purpose of `is_ntfs_dotgit()`
> is_ntfs_dotgit(): only verify the leading segment
> path: safeguard `.git` against NTFS Alternate Streams Accesses
> is_ntfs_dotgit(): speed it up
> mingw: fix quoting of arguments
> path: also guard `.gitmodules` against NTFS Alternate Data Streams
> protect_ntfs: turn on NTFS protection by default
> Disallow dubiously-nested submodule git directories
> quote-stress-test: accept arguments to test via the command-line
> t6130/t9350: prepare for stringent Win32 path validation
> quote-stress-test: allow skipping some trials
> unpack-trees: let merged_entry() pass through do_add_entry()'s errors
> mingw: refuse to access paths with illegal characters
> quote-stress-test: offer to test quoting arguments for MSYS2 sh
> mingw: refuse to access paths with trailing spaces or periods
> mingw: handle `subst`-ed "DOS drives"
> Git 2.14.6
> Git 2.15.4
> test-drop-caches: use `has_dos_drive_prefix()`
> Git 2.16.6
> Git 2.17.3
> Git 2.18.2
> Git 2.19.3
> t7415: adjust test for dubiously-nested submodule gitdirs for v2.20.x
> Git 2.20.2
> mingw: detect when MSYS2's sh is to be spawned more robustly
> mingw: use MSYS2 quoting even when spawning shell scripts
> mingw: fix quoting of empty arguments for `sh`
> t7415: drop v2.20.x-specific work-around
> mingw: sh arguments need quoting in more circumstances
> Git 2.21.1
> Git 2.22.2
> Git 2.23.1
> Git 2.24.1
> t3701: add a test for advanced split-hunk editing
> t3701: avoid depending on the TTY prerequisite
> t3701: add a test for the different `add -p` prompts
> t3701: verify the shown messages when nothing can be added
> t3701: verify that the diff.algorithm config setting is handled
> git add -p: use non-zero exit code when the diff generation failed
> apply --allow-overlap: fix a corner case
> t3404: fix indentation
> built-in add -i: start implementing the `patch` functionality in C
> built-in add -i: wire up the new C code for the `patch` command
> built-in add -p: show colored hunks by default
> built-in add -p: adjust hunk headers as needed
> built-in add -p: color the prompt and the help text
> built-in add -p: offer a helpful error message when hunk navigation failed
> built-in add -p: support multi-file diffs
> built-in add -p: handle deleted empty files
> built-in app -p: allow selecting a mode change as a "hunk"
> built-in add -p: show different prompts for mode changes and deletions
> built-in add -p: implement the hunk splitting feature
> built-in add -p: coalesce hunks after splitting them
> strbuf: add a helper function to call the editor "on an strbuf"
> built-in add -p: implement hunk editing
> built-in add -p: implement the 'g' ("goto") command
> built-in add -p: implement the '/' ("search regex") command
> built-in add -p: implement the 'q' ("quit") command
> built-in add -p: only show the applicable parts of the help text
> built-in add -p: show helpful hint when nothing can be staged
>
> Jonathan Nieder (3):
> submodule: reject submodule.update = !command in .gitmodules
> fsck: reject submodule.update = !command in .gitmodules
> submodule: defend against submodule.update = !command in .gitmodules
>
> Jonathan Tan (6):
> fetch-pack: write fetched refs to .promisor
> fetch: remove fetch_if_missing=0
> clone: remove fetch_if_missing=0
> promisor-remote: remove fetch_if_missing=0
> Doc: explain submodule.alternateErrorStrategy
> submodule--helper: advise on fatal alternate error
>
> Josh Holland (1):
> userdiff: support Python async functions
>
> Junio C Hamano (13):
> doc: am --show-current-patch gives an entire e-mail message
> The first batch post 2.24 cycle
> fsmonitor: do not compare bitmap size with size of split index
> ci(osx): update homebrew-cask repository with less noise
> rebase -i: finishing touches to --reset-author-date
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> Makefile: drop GEN_HDRS
> The sixth batch
> dir.c: use st_add3() for allocation size
> Git 2.25-rc0
>
> Kevin Willford (1):
> fsmonitor: fix watchman integration
>
> Manish Goregaokar (2):
> doc: document 'git submodule status --cached'
> submodule: fix 'submodule status' when called from a subdirectory
>
> Martin Ãgren (1):
> t7004: check existence of correct tag
>
> Matthew Rogers (1):
> rebase -r: let `label` generate safer labels
>
> Mihail Atanassov (1):
> Documentation/git-bisect.txt: add --no-ff to merge command
>
> Mike Hommey (2):
> revision: clear the topo-walk flags in reset_revision_walk
> revision: free topo_walk_info before creating a new one in init_topo_walk
>
> Miriam Rubio (1):
> clone: rename static function `dir_exists()`.
>
> Nathan Stocks (1):
> t: fix typo in test descriptions
>
> Naveen Nathan (1):
> doc: improve readability of --rebase-merges in git-rebase
>
> Nika Layzell (1):
> reset: parse rev as tree-ish in patch mode
>
> Philip Oakley (1):
> Doc: Bundle file usage
>
> Philippe Blain (4):
> help: add gitsubmodules to the list of guides
> worktree: teach "add" to ignore submodule.recurse config
> doc: mention that 'git submodule update' fetches missing commits
> gitmodules: link to gitsubmodules guide
>
> Phillip Wood (7):
> t3404: remove unnecessary subshell
> t3404: set $EDITOR in subshell
> t3404: remove uneeded calls to set_fake_editor
> sequencer.h fix placement of #endif
> move run_commit_hook() to libgit and use it there
> sequencer: run post-commit hook
> sequencer: fix empty commit check when amending
>
> Prarit Bhargava (3):
> t6006: use test-lib.sh definitions
> t4203: use test-lib.sh definitions
> pretty: add "%aL" etc. to show local-part of email addresses
>
> Pratyush Yadav (1):
> git-shortlog.txt: include commit limiting options
>
> Ralf Thielow (1):
> fetch.c: fix typo in a warning message
>
> Renà Scharfe (32):
> trace2: add dots directly to strbuf in perf_fmt_prepare()
> utf8: use skip_iprefix() in same_utf_encoding()
> convert: use skip_iprefix() in validate_encoding()
> mingw: use COPY_ARRAY for copying array
> parse-options: avoid arithmetic on pointer that's potentially NULL
> pretty: provide short date format
> fetch: use skip_prefix() instead of starts_with()
> fmt-merge-msg: use skip_prefix() instead of starts_with()
> shell: use skip_prefix() instead of starts_with()
> push: use skip_prefix() instead of starts_with()
> name-rev: use skip_prefix() instead of starts_with()
> run-command: use prepare_git_cmd() in prepare_cmd()
> t1512: use test_line_count
> t1410: use test_line_count
> t1400: use test_must_be_empty
> test: use test_must_be_empty F instead of test -z $(cat F)
> test: use test_must_be_empty F instead of test_cmp empty F
> t9300: don't create unused file
> t7811: don't create unused file
> xdiff: unignore changes in function context
> name-rev: use strbuf_strip_suffix() in get_rev_name()
> commit: use strbuf_add() to add a length-limited string
> patch-id: use oid_to_hex() to print multiple object IDs
> archive-zip: use enum for compression method
> t4256: don't create unused file
> t7004: don't create unused file
> refs: pass NULL to refs_read_ref_full() because object ID is not needed
> remote: pass NULL to read_ref_full() because object ID is not needed
> t3501: don't create unused file
> t5580: don't create unused file
> t6030: don't create unused file
> t4015: improve coverage of function context test
>
> Robin H. Johnson (3):
> bundle: framework for options before bundle file
> bundle-create: progress output control
> bundle-verify: add --quiet
>
> Rohit Ashiwal (6):
> rebase -i: add --ignore-whitespace flag
> sequencer: allow callers of read_author_script() to ignore fields
> rebase -i: support --committer-date-is-author-date
> sequencer: rename amend_author to author_to_rename
> rebase -i: support --ignore-date
> rebase: add --reset-author-date
>
> Ruud van Asseldonk (1):
> t5150: skip request-pull test if Perl is disabled
>
> SZEDER GÃbor (29):
> Documentation: mention more worktree-specific exceptions
> path.c: clarify trie_find()'s in-code comment
> path.c: mark 'logs/HEAD' in 'common_list' as file
> path.c: clarify two field names in 'struct common_dir'
> path.c: don't call the match function without value in trie_find()
> builtin/commit-graph.c: remove subcommand-less usage string
> builtin/blame.c: remove '--indent-heuristic' from usage string
> test-lib: don't check prereqs of test cases that won't be run anyway
> t6120-describe: correct test repo history graph in comment
> builtin/unpack-objects.c: show throughput progress
> tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
> t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
> sequencer: don't re-read todo for revert and cherry-pick
> test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
> ci: build Git with GCC 9 in the 'osx-gcc' build job
> t9300-fast-import: store the PID in a variable instead of pidfile
> t9300-fast-import: don't hang if background fast-import exits too early
> t6120-describe: modernize the 'check_describe' helper
> name-rev: avoid unnecessary cast in name_ref()
> name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
> t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
> name-rev: extract creating/updating a 'struct name_rev' into a helper
> name-rev: pull out deref handling from the recursion
> name-rev: restructure parsing commits and applying date cutoff
> name-rev: restructure creating/updating 'struct rev_name' instances
> name-rev: drop name_rev()'s 'generation' and 'distance' parameters
> name-rev: use 'name->tip_name' instead of 'tip_name'
> name-rev: eliminate recursion in name_rev()
> name-rev: cleanup name_ref()
>
> Slavica ÄukiÄ (3):
> built-in add -i: color the header in the `status` command
> built-in add -i: use color in the main loop
> built-in add -i: implement the `help` command
>
> Tanushree Tumane (2):
> bisect--helper: avoid use-after-free
> bisect--helper: convert `*_warning` char pointers to char arrays.
>
> Thomas Gummerer (1):
> stash: make sure we have a valid index before writing it
>
> Todd Zullinger (1):
> t7812: expect failure for grep -i with invalid UTF-8 data
>
> Utsav Shah (1):
> unpack-trees: skip stat on fsmonitor-valid files
>
> William Baker (6):
> midx: add MIDX_PROGRESS flag
> midx: add progress to write_midx_file
> midx: add progress to expire_midx_packs
> midx: honor the MIDX_PROGRESS flag in verify_midx_file
> midx: honor the MIDX_PROGRESS flag in midx_repack
> multi-pack-index: add [--[no-]progress] option.
>
> brian m. carlson (16):
> t/oid-info: allow looking up hash algorithm name
> t/oid-info: add empty tree and empty blob values
> rev-parse: add a --show-object-format option
> t1305: avoid comparing extensions
> t3429: remove SHA1 annotation
> t4010: abstract away SHA-1-specific constants
> t4011: abstract away SHA-1-specific constants
> t4015: abstract away SHA-1-specific constants
> t4027: make hash-size independent
> t4034: abstract away SHA-1-specific constants
> t4038: abstract away SHA-1 specific constants
> t4039: abstract away SHA-1-specific constants
> t4044: update test to work with SHA-256
> t4045: make hash-size independent
> t4048: abstract away SHA-1-specific constants
> t9001: avoid including non-trailing NUL bytes in variables
>
> r.burenkov (1):
> git-p4: honor lfs.storage configuration variable
>
> ryenus (1):
> fix-typo: consecutive-word duplications
>
> Åukasz Niemier (1):
> userdiff: add Elixir to supported userdiff languages
>